|
|
- name: Test Build
-
- on:
- pull_request:
-
- jobs:
- build:
- name: Test ${{ matrix.arch }}
- runs-on: ubuntu-latest
- strategy:
- fail-fast: false
- matrix:
- include:
- - arch: arc_archs
- target: archs38-generic
- runtime_test: false
-
- - 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_8540
- 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@v2
- 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@v4
- 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@v2
- with:
- name: ${{env.ARCHIVE_NAME}}-packages
- path: |
- *.ipk
- PKG-INFO
-
- - name: Store logs
- uses: actions/upload-artifact@v2
- 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
|