From f3d37d542bd345bc4ae25c477e3020bd21762fb2 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 8 Nov 2024 17:03:09 +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 --- .github/workflows/Dockerfile | 6 - .github/workflows/entrypoint.sh | 43 ------ .github/workflows/multi-arch-test-build.yml | 161 +------------------- 3 files changed, 3 insertions(+), 207 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 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 6af84b8..0000000 --- a/.github/workflows/entrypoint.sh +++ /dev/null @@ -1,43 +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 - -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" - - opkg install "$PKG" - - export PKG_NAME PKG_VERSION CI_HELPER - - 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 successful" - 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 -done diff --git a/.github/workflows/multi-arch-test-build.yml b/.github/workflows/multi-arch-test-build.yml index 514c276..e5ac78c 100644 --- a/.github/workflows/multi-arch-test-build.yml +++ b/.github/workflows/multi-arch-test-build.yml @@ -1,164 +1,9 @@ -name: Test Build +name: Feeds Package Test Build on: pull_request: jobs: build: - name: Test ${{ matrix.arch }} - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - include: - - arch: arm_cortex-a9_vfpv3-d16 - target: mvebu-cortexa9 - runtime_test: false - - - arch: mips_24kc - target: ath79-generic - runtime_test: false - - - 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: aarch64_cortex-a53 - target: mvebu-cortexa53 - runtime_test: true - - - arch: arm_cortex-a15_neon-vfpv4 - target: armvirt-32 - runtime_test: true - - - arch: i386_pentium-mmx - target: x86-geode - runtime_test: true - - - 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: Build - uses: openwrt/gh-action-sdk@v5 - env: - ARCH: ${{ matrix.arch }}-${{ env.BRANCH }} - FEEDNAME: packages_ci - - - name: Move created packages to project dir - run: cp bin/packages/${{ matrix.arch }}/packages_ci/*.ipk . || 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: | - *.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: Register QEMU - if: ${{ matrix.runtime_test }} - run: | - sudo docker run --rm --privileged aptman/qus -s -- -p - - - name: Build Docker container - if: ${{ matrix.runtime_test }} - run: | - docker build -t test-container --build-arg ARCH .github/workflows/ - env: - ARCH: ${{ matrix.arch }}-${{ env.BRANCH }} - - - name: Test via Docker container - if: ${{ matrix.runtime_test }} - run: | - docker run --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