github: improve CI
authorÁlvaro Fernández Rojas <[email protected]>
Sat, 18 Oct 2025 08:13:26 +0000 (10:13 +0200)
committerÁlvaro Fernández Rojas <[email protected]>
Sat, 18 Oct 2025 15:55:10 +0000 (17:55 +0200)
- Remove unneeded CMAKE_SYSTEM_PROCESSOR.
- Add summary table with sizes (in bytes) for each arch/variant.
- Upload generated binaries as artifacts.
- Add OpenWrt formalities.

Signed-off-by: Álvaro Fernández Rojas <[email protected]>
.github/workflows/ci.yml
.github/workflows/formal.yml [new file with mode: 0644]
.github/workflows/scripts/ci_helpers.sh [new file with mode: 0644]

index a817829315c99552ba750f4c028591b44a3e0153..5a555408eaed5e86b8a782c36987c2538fb76c24 100644 (file)
@@ -24,7 +24,23 @@ jobs:
           - arch: x86_64
             gcc: /usr/bin/x86_64-linux-gnu-gcc
             packages: gcc-x86-64-linux-gnu
-
+    outputs:
+      size-aarch64-basic: ${{ steps.basic.outputs.size_aarch64 }}
+      size-aarch64-dhcpv4: ${{ steps.dhcpv4.outputs.size_aarch64 }}
+      size-aarch64-ubus: ${{ steps.ubus.outputs.size_aarch64 }}
+      size-aarch64-full: ${{ steps.full.outputs.size_aarch64 }}
+      size-arm-basic: ${{ steps.basic.outputs.size_arm }}
+      size-arm-dhcpv4: ${{ steps.dhcpv4.outputs.size_arm }}
+      size-arm-ubus: ${{ steps.ubus.outputs.size_arm }}
+      size-arm-full: ${{ steps.full.outputs.size_arm }}
+      size-mips-basic: ${{ steps.basic.outputs.size_mips }}
+      size-mips-dhcpv4: ${{ steps.dhcpv4.outputs.size_mips }}
+      size-mips-ubus: ${{ steps.ubus.outputs.size_mips }}
+      size-mips-full: ${{ steps.full.outputs.size_mips }}
+      size-x86_64-basic: ${{ steps.basic.outputs.size_x86_64 }}
+      size-x86_64-dhcpv4: ${{ steps.dhcpv4.outputs.size_x86_64 }}
+      size-x86_64-ubus: ${{ steps.ubus.outputs.size_x86_64 }}
+      size-x86_64-full: ${{ steps.full.outputs.size_x86_64 }}
     steps:
       - name: Checkout odhcpd
         uses: actions/checkout@v5
@@ -71,7 +87,6 @@ jobs:
         working-directory: depends/json-c
         run: |
           cmake \
-            -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} \
             -DCMAKE_C_COMPILER=${{ matrix.gcc }} \
             -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
             -DBUILD_SHARED_LIBS=OFF -DDISABLE_EXTRA_LIBS=ON  \
@@ -83,7 +98,6 @@ jobs:
         working-directory: depends/libnl-tiny
         run: |
           cmake \
-            -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} \
             -DCMAKE_C_COMPILER=${{ matrix.gcc }} \
             -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
             --install-prefix ${GITHUB_WORKSPACE}/build
@@ -94,7 +108,6 @@ jobs:
         working-directory: depends/libubox
         run: |
           cmake \
-            -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} \
             -DCMAKE_C_COMPILER=${{ matrix.gcc }} \
             -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
             -DBUILD_LUA=OFF -DBUILD_EXAMPLES=OFF \
@@ -106,7 +119,6 @@ jobs:
         working-directory: depends/ubus
         run: |
           cmake \
-            -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} \
             -DCMAKE_C_COMPILER=${{ matrix.gcc }} \
             -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
             -DBUILD_LUA=OFF -DBUILD_EXAMPLES=OFF \
@@ -118,7 +130,6 @@ jobs:
         working-directory: depends/uci
         run: |
           cmake \
-            -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} \
             -DCMAKE_C_COMPILER=${{ matrix.gcc }} \
             -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
             -DBUILD_LUA=OFF \
@@ -126,41 +137,93 @@ jobs:
           make
           make install
 
-      - name: Build odhcpd (basic)
+      - id: basic
+        name: Build odhcpd (basic)
+        env:
+          BUILD_DIR: build/odhcpd-basic
         run: |
           cmake \
-            -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} \
             -DCMAKE_C_COMPILER=${{ matrix.gcc }} \
             -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
-            -B build/odhcpd-basic
-          make -C build/odhcpd-basic
-
-      - name: Build odhcpd (DHCPv4)
+            -B $BUILD_DIR
+          make -C $BUILD_DIR
+          echo "size_${{ matrix.arch }}=$( find $BUILD_DIR -type f -name odhcpd -printf '%s' )" >> $GITHUB_OUTPUT
+
+      - id: dhcpv4
+        name: Build odhcpd (DHCPv4)
+        env:
+          BUILD_DIR: build/odhcpd-dhcpv4
         run: |
           cmake \
-            -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} \
             -DCMAKE_C_COMPILER=${{ matrix.gcc }} \
             -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
             -DDHCPV4_SUPPORT=ON \
-            -B build/odhcpd-dhcpv4
-          make -C build/odhcpd-dhcpv4
-
-      - name: Build odhcpd (UBUS)
+            -B $BUILD_DIR
+          make -C $BUILD_DIR
+          echo "size_${{ matrix.arch }}=$( find $BUILD_DIR -type f -name odhcpd -printf '%s' )" >> $GITHUB_OUTPUT
+
+      - id: ubus
+        name: Build odhcpd (UBUS)
+        env:
+          BUILD_DIR: build/odhcpd-ubus
         run: |
           cmake \
-            -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} \
             -DCMAKE_C_COMPILER=${{ matrix.gcc }} \
             -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
             -DUBUS=ON \
-            -B build/odhcpd-ubus
-          make -C build/odhcpd-ubus
-
-      - name: Build odhcpd (full)
+            -B $BUILD_DIR
+          make -C $BUILD_DIR
+          echo "size_${{ matrix.arch }}=$( find $BUILD_DIR -type f -name odhcpd -printf '%s' )" >> $GITHUB_OUTPUT
+
+      - id: full
+        name: Build odhcpd (full)
+        env:
+          BUILD_DIR: build/odhcpd-full
         run: |
           cmake \
-            -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} \
             -DCMAKE_C_COMPILER=${{ matrix.gcc }} \
             -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
             -DDHCPV4_SUPPORT=ON -DUBUS=ON \
-            -B build/odhcpd-full
-          make -C build/odhcpd-full
+            -B $BUILD_DIR
+          make -C $BUILD_DIR
+          echo "size_${{ matrix.arch }}=$( find $BUILD_DIR -type f -name odhcpd -printf '%s' )" >> $GITHUB_OUTPUT
+
+      - name: Upload binaries
+        uses: actions/upload-artifact@v4
+        with:
+          name: odhcpd-${{ matrix.arch }}-binaries
+          path: |
+            build/odhcpd-*/odhcpd
+          if-no-files-found: error
+
+  summary:
+    name: Sizes
+    needs: [build]
+    runs-on: ubuntu-latest
+    steps:
+      - name: Sizes summary
+        env:
+          size_aarch64_basic: ${{needs.build.outputs.size-aarch64-basic}}
+          size_aarch64_dhcpv4: ${{needs.build.outputs.size-aarch64-dhcpv4}}
+          size_aarch64_ubus: ${{needs.build.outputs.size-aarch64-ubus}}
+          size_aarch64_full: ${{needs.build.outputs.size-aarch64-full}}
+          size_arm_basic: ${{needs.build.outputs.size-arm-basic}}
+          size_arm_dhcpv4: ${{needs.build.outputs.size-arm-dhcpv4}}
+          size_arm_ubus: ${{needs.build.outputs.size-arm-ubus}}
+          size_arm_full: ${{needs.build.outputs.size-arm-full}}
+          size_mips_basic: ${{needs.build.outputs.size-mips-basic}}
+          size_mips_dhcpv4: ${{needs.build.outputs.size-mips-dhcpv4}}
+          size_mips_ubus: ${{needs.build.outputs.size-mips-ubus}}
+          size_mips_full: ${{needs.build.outputs.size-mips-full}}
+          size_x86_64_basic: ${{needs.build.outputs.size-x86_64-basic}}
+          size_x86_64_dhcpv4: ${{needs.build.outputs.size-x86_64-dhcpv4}}
+          size_x86_64_ubus: ${{needs.build.outputs.size-x86_64-ubus}}
+          size_x86_64_full: ${{needs.build.outputs.size-x86_64-full}}
+        run: |
+          echo "### ${GITHUB_WORKFLOW} sizes :floppy_disk:" >> $GITHUB_STEP_SUMMARY
+          echo "| Variant | aarch64 | arm | mips | x86_64 |" >> $GITHUB_STEP_SUMMARY
+          echo "| :---: | :---: | :---: | :---: | :---: |" >> $GITHUB_STEP_SUMMARY
+          echo "| basic | ${size_aarch64_basic} | ${size_arm_basic} | ${size_mips_basic} | ${size_x86_64_basic} |" >> $GITHUB_STEP_SUMMARY
+          echo "| DHCPv4 | ${size_aarch64_dhcpv4} | ${size_arm_dhcpv4} | ${size_mips_dhcpv4} | ${size_x86_64_dhcpv4} |" >> $GITHUB_STEP_SUMMARY
+          echo "| UBUS | ${size_aarch64_ubus} | ${size_arm_ubus} | ${size_mips_ubus} | ${size_x86_64_ubus} |" >> $GITHUB_STEP_SUMMARY
+          echo "| full | ${size_aarch64_full} | ${size_arm_full} | ${size_mips_full} | ${size_x86_64_full} |" >> $GITHUB_STEP_SUMMARY
diff --git a/.github/workflows/formal.yml b/.github/workflows/formal.yml
new file mode 100644 (file)
index 0000000..081129d
--- /dev/null
@@ -0,0 +1,12 @@
+name: Test Formalities
+
+on:
+  pull_request:
+
+permissions:
+  contents: read
+
+jobs:
+  build:
+    name: Test Formalities
+    uses: openwrt/actions-shared-workflows/.github/workflows/formal.yml@main
diff --git a/.github/workflows/scripts/ci_helpers.sh b/.github/workflows/scripts/ci_helpers.sh
new file mode 100644 (file)
index 0000000..2f9daf8
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+color_out() {
+       printf "\e[0;$1m%s\e[0;0m\n" "$2"
+}
+
+success() {
+       color_out 32 "$1"
+}
+
+info() {
+       color_out 36 "$1"
+}
+
+err() {
+       color_out 31 "$1"
+}
+
+warn() {
+       color_out 33 "$1"
+}
+
+err_die() {
+       err "$1"
+       exit 1
+}