7 group: ${{ github.workflow }}-${{ github.ref }}
8 cancel-in-progress: ${{ github.event_name == 'pull_request' }}
12 name: Test ${{ matrix.arch }}
13 runs-on: ubuntu-latest
18 - arch: aarch64_generic
22 - arch: arm_cortex-a15_neon-vfpv4
26 - arch: arm_cortex-a9_vfpv3-d16
27 target: mvebu-cortexa9
30 - arch: i386_pentium-mmx
50 - arch: riscv64_riscv64
51 target: sifiveu-generic
59 - uses: actions/checkout@v4
63 - name: Determine branch name
65 BRANCH="${GITHUB_BASE_REF#refs/heads/}"
66 echo "Building for $BRANCH"
67 echo "BRANCH=$BRANCH" >> $GITHUB_ENV
69 - name: Determine changed packages
71 # only detect packages with changes
72 PKG_ROOTS=$(find . -name Makefile | \
73 grep -v ".*/src/Makefile" | \
74 sed -e 's@./\(.*\)/Makefile@\1/@')
75 CHANGES=$(git diff --diff-filter=d --name-only origin/$BRANCH...)
77 for ROOT in $PKG_ROOTS; do
78 for CHANGE in $CHANGES; do
79 if [[ "$CHANGE" == "$ROOT"* ]]; then
80 PACKAGES+=$(echo "$ROOT" | sed -e 's@.*/\(.*\)/@\1 @')
86 # fallback to test packages if nothing explicitly changes this is
87 # should run if other mechanics in packages.git changed
88 PACKAGES="${PACKAGES:-vim attendedsysupgrade-common bmon}"
90 echo "Building $PACKAGES"
91 echo "PACKAGES=$PACKAGES" >> $GITHUB_ENV
93 - name: Generate build keys
96 sudo apt-get install -y signify-openbsd
97 signify-openbsd -G -n -c 'DO NOT USE - OpenWrt packages feed CI' -p packages_ci.pub -s packages_ci.sec
98 EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
99 echo "KEY_BUILD<<$EOF" >> $GITHUB_ENV
100 cat packages_ci.sec >> $GITHUB_ENV
101 echo "$EOF" >> $GITHUB_ENV
104 uses: openwrt/gh-action-sdk@v7
106 ARCH: ${{ matrix.arch }}-${{ env.BRANCH }}
107 FEEDNAME: packages_ci
109 KEY_BUILD: ${{ env.KEY_BUILD }}
112 - name: Move created packages to project dir
114 run: cp bin/packages/${{ matrix.arch }}/packages_ci/* . || true
116 - name: Collect metadata
119 MERGE_ID=$(git rev-parse --short HEAD)
120 echo "MERGE_ID=$MERGE_ID" >> $GITHUB_ENV
121 echo "BASE_ID=$(git rev-parse --short HEAD^1)" >> $GITHUB_ENV
122 echo "HEAD_ID=$(git rev-parse --short HEAD^2)" >> $GITHUB_ENV
123 PRNUMBER=${GITHUB_REF_NAME%/merge}
124 echo "PRNUMBER=$PRNUMBER" >> $GITHUB_ENV
125 echo "ARCHIVE_NAME=${{matrix.arch}}-PR$PRNUMBER-$MERGE_ID" >> $GITHUB_ENV
127 - name: Generate metadata
130 cat << _EOF_ > PKG-INFO
131 Metadata-Version: 2.1
132 Name: ${{env.ARCHIVE_NAME}}
134 Author: $GITHUB_ACTOR
135 Home-page: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/pull/$PRNUMBER
136 Download-URL: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID
138 Platform: ${{ matrix.arch }}
140 Packages for OpenWrt $BRANCH running on ${{matrix.arch}}, built from PR $PRNUMBER
141 at commit $HEAD_ID, against $BRANCH at commit $BASE_ID, with merge SHA $MERGE_ID.
147 echo " "$p >> PKG-INFO
150 echo Full file listing: >> PKG-INFO
151 ls -al *.ipk >> PKG-INFO || true
154 - name: Store packages
156 uses: actions/upload-artifact@v4
158 name: ${{env.ARCHIVE_NAME}}-packages
167 uses: actions/upload-artifact@v4
169 name: ${{env.ARCHIVE_NAME}}-logs
176 run: sudo rm -rf logs/ || true
178 - name: Check if any packages were built
180 if [ -n "$(find . -maxdepth 1 -type f -name '*.ipk' -print -quit)" ]; then
181 echo "Found *.ipk files"
184 echo "No *.ipk files found"
187 echo "HAVE_IPKS=$HAVE_IPKS" >> $GITHUB_ENV
189 - name: Register QEMU
190 if: ${{ matrix.runtime_test && fromJSON(env.HAVE_IPKS) }}
193 sudo apt-get install -y qemu-user-static binfmt-support
194 sudo update-binfmts --import
196 - name: Build Docker container
197 if: ${{ matrix.runtime_test && fromJSON(env.HAVE_IPKS) }}
199 docker build -t test-container --build-arg ARCH .github/workflows/
201 ARCH: ${{ matrix.arch }}-${{ env.BRANCH }}
203 - name: Test via Docker container
204 if: ${{ matrix.runtime_test && fromJSON(env.HAVE_IPKS) }}
206 docker run --rm -v $GITHUB_WORKSPACE:/ci test-container