mirror of
https://github.com/novatiq/packages.git
synced 2026-04-24 21:14:40 +01:00
Additional to manual runtime tests this CI addition runs a custom test script per package. Ideally this lowers the errors of package bumps, something which is time consuming when done manually for multiple architectures. This CI uses the official OpenWrt containers and tries to install and run compiled packages. The run depends on the content of `test.sh`, which is an `ash` script. It's called with the *packge name* and *package version* as arguments. This allows different behaviour if a single package generates multiple IPK files. The version is usable for the most trivial runtime check, e.g. `tmux -V | grep "$2"`. The current approach uses the qus project[1] which contains multiple QEMU binaries to run various architectures. [1]: https://github.com/dbhi/qus Signed-off-by: Paul Spooren <mail@aparcar.org>
93 lines
2.5 KiB
YAML
93 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 'Makefile$' | 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
|