From: Álvaro Fernández Rojas Date: Sat, 18 Oct 2025 08:13:26 +0000 (+0200) Subject: github: improve CI X-Git-Url: http://git.openwrt.org/?a=commitdiff_plain;h=4ee309a54011169aaea91674c666894d940a0970;p=project%2Fodhcpd.git github: improve CI - 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 --- diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a817829..5a55540 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -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 index 0000000..081129d --- /dev/null +++ b/.github/workflows/formal.yml @@ -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 index 0000000..2f9daf8 --- /dev/null +++ b/.github/workflows/scripts/ci_helpers.sh @@ -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 +}