+++ /dev/null
-#!/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
-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