From: Christian Marangi Date: Fri, 8 Nov 2024 16:29:08 +0000 (+0100) Subject: CI: multi-arch-test-build: move to shared workflow X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=refs%2Fheads%2Fopenwrt-24.10;p=feed%2Frouting.git CI: multi-arch-test-build: move to shared workflow Move multi-arch-test-build to shared workflow. Signed-off-by: Christian Marangi (cherry picked from commit ab45dac330d7cc7c3914b4710b0b12e7d196a85d) --- diff --git a/.github/workflows/Dockerfile b/.github/workflows/Dockerfile deleted file mode 100644 index fbd17fc..0000000 --- a/.github/workflows/Dockerfile +++ /dev/null @@ -1,6 +0,0 @@ -ARG ARCH=x86-64 -FROM openwrt/rootfs:$ARCH - -ADD entrypoint.sh /entrypoint.sh - -CMD ["/entrypoint.sh"] diff --git a/.github/workflows/entrypoint.sh b/.github/workflows/entrypoint.sh deleted file mode 100755 index a0fdae3..0000000 --- a/.github/workflows/entrypoint.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/sh - -# not enabling `errtrace` and `pipefail` since those are bash specific -set -o errexit # failing commands causes script to fail -set -o nounset # undefined variables causes script to fail - -echo "src/gz packages_ci file:///ci" >> /etc/opkg/distfeeds.conf - -FINGERPRINT="$(usign -F -p /ci/packages_ci.pub)" -cp /ci/packages_ci.pub "/etc/opkg/keys/$FINGERPRINT" - -mkdir -p /var/lock/ - -opkg update - -[ -n "${CI_HELPER:=''}" ] || CI_HELPER="/ci/.github/workflows/ci_helpers.sh" - -for PKG in /ci/*.ipk; do - tar -xzOf "$PKG" ./control.tar.gz | tar xzf - ./control - # package name including variant - PKG_NAME=$(sed -ne 's#^Package: \(.*\)$#\1#p' ./control) - # package version without release - PKG_VERSION=$(sed -ne 's#^Version: \(.*\)-[0-9]*$#\1#p' ./control) - # package source contianing test.sh script - PKG_SOURCE=$(sed -ne 's#^Source: .*/\(.*\)$#\1#p' ./control) - - echo "Testing package $PKG_NAME in version $PKG_VERSION from $PKG_SOURCE" - - export PKG_NAME PKG_VERSION CI_HELPER - - PRE_TEST_SCRIPT=$(find /ci/ -name "$PKG_SOURCE" -type d)/pre-test.sh - - if [ -f "$PRE_TEST_SCRIPT" ]; then - echo "Use package specific pre-test.sh" - if sh "$PRE_TEST_SCRIPT" "$PKG_NAME" "$PKG_VERSION"; then - echo "Pre-test successful" - else - echo "Pre-test failed" - exit 1 - fi - else - echo "No pre-test.sh script available" - fi - - opkg install "$PKG" - - TEST_SCRIPT=$(find /ci/ -name "$PKG_SOURCE" -type d)/test.sh - - if [ -f "$TEST_SCRIPT" ]; then - echo "Use package specific test.sh" - if sh "$TEST_SCRIPT" "$PKG_NAME" "$PKG_VERSION"; then - echo "Test succesful" - else - echo "Test failed" - exit 1 - fi - else - echo "No test.sh script available" - fi - - opkg remove "$PKG_NAME" --force-removal-of-dependent-packages --force-remove --autoremove || true -done diff --git a/.github/workflows/multi-arch-test-build.yml b/.github/workflows/multi-arch-test-build.yml index 03aafc7..e5ac78c 100644 --- a/.github/workflows/multi-arch-test-build.yml +++ b/.github/workflows/multi-arch-test-build.yml @@ -1,157 +1,9 @@ -name: Test Build +name: Feeds Package Test Build on: pull_request: -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: ${{ github.event_name == 'pull_request' }} - jobs: build: - name: Test ${{ matrix.arch }} - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - include: - - arch: aarch64_generic - target: armsr-armv8 - runtime_test: true - - - arch: arm_cortex-a15_neon-vfpv4 - target: armsr-armv7 - runtime_test: true - - - arch: arm_cortex-a9_vfpv3-d16 - target: mvebu-cortexa9 - runtime_test: false - - - arch: i386_pentium-mmx - target: x86-geode - runtime_test: true - - - arch: mips_24kc - target: ath79-generic - runtime_test: true - - - arch: powerpc_464fp - target: apm821xx-nand - runtime_test: false - - - arch: powerpc_8548 - target: mpc85xx-p1010 - runtime_test: false - - - arch: riscv64_riscv64 - target: sifiveu-generic - runtime_test: false - - - arch: x86_64 - target: x86-64 - runtime_test: true - - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Determine branch name - run: | - BRANCH="${GITHUB_BASE_REF#refs/heads/}" - echo "Building for $BRANCH" - echo "BRANCH=$BRANCH" >> $GITHUB_ENV - - - name: Determine changed packages - run: | - # only detect packages with changes - PKG_ROOTS=$(find . -name Makefile | \ - grep -v ".*/src/Makefile" | \ - sed -e 's@./\(.*\)/Makefile@\1/@') - CHANGES=$(git diff --diff-filter=d --name-only origin/$BRANCH) - - for ROOT in $PKG_ROOTS; do - for CHANGE in $CHANGES; do - if [[ "$CHANGE" == "$ROOT"* ]]; then - PACKAGES+=$(echo "$ROOT" | sed -e 's@\(.*\)/@\1 @') - break - fi - done - done - - # fallback to test packages if nothing explicitly changes this is - # should run if other mechanics in packages.git changed - PACKAGES="${PACKAGES:-bird2 cjdns olsrd}" - - echo "Building $PACKAGES" - echo "PACKAGES=$PACKAGES" >> $GITHUB_ENV - - - name: Generate build keys - run: | - sudo apt-get update - sudo apt-get install -y signify-openbsd - signify-openbsd -G -n -c 'DO NOT USE - OpenWrt packages feed CI' -p packages_ci.pub -s packages_ci.sec - EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) - echo "KEY_BUILD<<$EOF" >> $GITHUB_ENV - cat packages_ci.sec >> $GITHUB_ENV - echo "$EOF" >> $GITHUB_ENV - - - name: Build - uses: openwrt/gh-action-sdk@v5 - env: - ARCH: ${{ matrix.arch }}-${{ env.BRANCH }} - FEEDNAME: packages_ci - INDEX: 1 - KEY_BUILD: ${{ env.KEY_BUILD }} - - - name: Move created packages to project dir - run: cp bin/packages/${{ matrix.arch }}/packages_ci/* . || true - - - name: Store packages - uses: actions/upload-artifact@v3 - with: - name: ${{env.ARCHIVE_NAME}}-packages - path: | - Packages - Packages.* - *.ipk - PKG-INFO - - - name: Store logs - uses: actions/upload-artifact@v3 - with: - name: ${{ matrix.arch}}-logs - path: logs/ - - - name: Remove logs - run: sudo rm -rf logs/ || true - - - name: Check if any packages were built - run: | - if [ -n "$(find . -maxdepth 1 -type f -name '*.ipk' -print -quit)" ]; then - echo "Found *.ipk files" - HAVE_IPKS=true - else - echo "No *.ipk files found" - HAVE_IPKS=false - fi - echo "HAVE_IPKS=$HAVE_IPKS" >> $GITHUB_ENV - - - name: Register QEMU - if: ${{ matrix.runtime_test && fromJSON(env.HAVE_IPKS) }} - run: | - sudo apt-get update - sudo apt-get install -y qemu-user-static binfmt-support - sudo update-binfmts --import - - - name: Build Docker container - if: ${{ matrix.runtime_test && fromJSON(env.HAVE_IPKS) }} - run: | - docker build --platform linux/${{ matrix.arch }} -t test-container --build-arg ARCH .github/workflows/ - env: - ARCH: ${{ matrix.arch }}-${{ env.BRANCH }} - - - name: Test via Docker container - if: ${{ matrix.runtime_test && fromJSON(env.HAVE_IPKS) }} - run: | - docker run --platform linux/${{ matrix.arch }} --rm -v $GITHUB_WORKSPACE:/ci test-container + name: Feeds Package Test Build + uses: openwrt/actions-shared-workflows/.github/workflows/multi-arch-test-build.yml@main