packages/.github/workflows/multi-arch-test-build.yml
Paul Spooren b36bb173b3 CI: run also on test.sh changes
The CI only tests packages if a Makefile changed, e.g. containing a
version or release bump. This covers package related files as at least
the package release must change whenever a file was touched.

The `test.sh` file is a runtime test used to verify working packages
within OpenWrt containers. This file can independently change and will
never be included in the package ipk files, therefore trigger the CI on
its changes as well.

Signed-off-by: Paul Spooren <mail@aparcar.org>
2020-09-17 09:05:16 -10:00

92 lines
2.5 KiB
YAML

name: Test Build
on:
pull_request:
branches:
- master
jobs:
build:
name: Test ${{ matrix.arch }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
arch:
- arc_arc700
- arc_archs
- arm_cortex-a9_neon
- arm_cortex-a9_vfpv3-d16
- mips_24kc
- powerpc_464fp
- powerpc_8540
runtime_test: [false]
include:
- arch: aarch64_generic
runtime_test: true
- arch: arm_cortex-a15_neon-vfpv4
runtime_test: true
- arch: i386_pentium4
runtime_test: true
- arch: x86_64
runtime_test: true
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Determine changed packages
run: |
# only detect packages with changed Makefiles
PACKAGES="$(git diff --diff-filter=d --name-only origin/master \
| grep -E 'Makefile$|test.sh$' | grep -Ev '/files/|/src/' \
| awk -F/ '{ print $(NF-1) }' | tr '\n' ' ')"
# fallback to test packages if nothing explicitly changes this is
# should run if other mechanics in packages.git changed
PACKAGES="${PACKAGES:-vim tmux bmon}"
echo "Building $PACKAGES"
echo "::set-env name=PACKAGES::$PACKAGES"
- name: Build
uses: openwrt/gh-action-sdk@v1
env:
ARCH: ${{ matrix.arch }}
FEEDNAME: packages_ci
- name: Move created packages to project dir
run: cp bin/packages/${{ matrix.arch }}/packages_ci/*.ipk . || true
- name: Store packages
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.arch}}-packages
path: "*.ipk"
- name: Store logs
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.arch}}-logs
path: logs/
- 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 }}
- name: Test via Docker container
if: ${{ matrix.runtime_test }}
run: |
docker run --rm -v $GITHUB_WORKSPACE:/ci test-container