From 7ee4fe7705f8b44ccfd2ec9470e91c8d900a65ab Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 8 Nov 2024 19:36:52 +0100 Subject: [PATCH] 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 2a35a9cab226a43d5521b6356cb5e64a5b174df2) --- .github/workflows/Dockerfile | 6 - .github/workflows/entrypoint.sh | 70 ------- .github/workflows/multi-arch-test-build.yml | 196 +------------------- 3 files changed, 3 insertions(+), 269 deletions(-) delete mode 100644 .github/workflows/Dockerfile delete mode 100755 .github/workflows/entrypoint.sh diff --git a/.github/workflows/Dockerfile b/.github/workflows/Dockerfile deleted file mode 100644 index fbd17fc1f9..0000000000 --- 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 363e158226..0000000000 --- a/.github/workflows/entrypoint.sh +++ /dev/null @@ -1,70 +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 - -export 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: \(.*\)$#\1#p' ./control) - PKG_VERSION="${PKG_VERSION%-[!-]*}" - # package source containing test.sh script - PKG_SOURCE=$(sed -ne 's#^Source: \(.*\)$#\1#p' ./control) - PKG_SOURCE="${PKG_SOURCE#/feed/}" - - echo - echo "Testing package $PKG_NAME in version $PKG_VERSION from $PKG_SOURCE" - - if ! [ -d "/ci/$PKG_SOURCE" ]; then - echo "$PKG_SOURCE is not a directory" - exit 1 - fi - - PRE_TEST_SCRIPT="/ci/$PKG_SOURCE/pre-test.sh" - TEST_SCRIPT="/ci/$PKG_SOURCE/test.sh" - - if ! [ -f "$TEST_SCRIPT" ]; then - echo "No test.sh script available" - continue - fi - - export PKG_NAME PKG_VERSION - - 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" - - echo "Use package specific test.sh" - if sh "$TEST_SCRIPT" "$PKG_NAME" "$PKG_VERSION"; then - echo "Test successful" - else - echo "Test failed" - exit 1 - 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 eac87e10be..e5ac78c01a 100644 --- a/.github/workflows/multi-arch-test-build.yml +++ b/.github/workflows/multi-arch-test-build.yml @@ -1,199 +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: mipsel_24kc - target: mt7621 - runtime_test: false - - - 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:-vim attendedsysupgrade-common bmon}" - - 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: Collect metadata - run: | - MERGE_ID=$(git rev-parse --short HEAD) - echo "MERGE_ID=$MERGE_ID" >> $GITHUB_ENV - echo "BASE_ID=$(git rev-parse --short HEAD^1)" >> $GITHUB_ENV - echo "HEAD_ID=$(git rev-parse --short HEAD^2)" >> $GITHUB_ENV - PRNUMBER=${GITHUB_REF_NAME%/merge} - echo "PRNUMBER=$PRNUMBER" >> $GITHUB_ENV - echo "ARCHIVE_NAME=${{matrix.arch}}-PR$PRNUMBER-$MERGE_ID" >> $GITHUB_ENV - - - name: Generate metadata - run: | - cat << _EOF_ > PKG-INFO - Metadata-Version: 2.1 - Name: ${{env.ARCHIVE_NAME}} - Version: $BRANCH - Author: $GITHUB_ACTOR - Home-page: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/pull/$PRNUMBER - Download-URL: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID - Summary: $PACKAGES - Platform: ${{ matrix.arch }} - - Packages for OpenWrt $BRANCH running on ${{matrix.arch}}, built from PR $PRNUMBER - at commit $HEAD_ID, against $BRANCH at commit $BASE_ID, with merge SHA $MERGE_ID. - - Modified packages: - _EOF_ - for p in $PACKAGES - do - echo " "$p >> PKG-INFO - done - echo >> PKG-INFO - echo Full file listing: >> PKG-INFO - ls -al *.ipk >> PKG-INFO || true - cat PKG-INFO - - - 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: ${{env.ARCHIVE_NAME}}-logs - path: | - logs/ - PKG-INFO - - - 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 -- 2.30.2