house-keeping: migrate workflows from GitHub deprecated node16 -> node20
[project/luci.git] / .github / workflows / build.yml
1 name: Test Build
2
3 on:
4 pull_request:
5
6 jobs:
7 build:
8 name: Test ${{ matrix.arch }}
9 runs-on: ubuntu-latest
10 strategy:
11 fail-fast: false
12 matrix:
13 include:
14 - arch: x86_64
15 target: x86-64
16
17 steps:
18 - uses: actions/checkout@v4
19 with:
20 fetch-depth: 0
21
22 - name: Determine branch name
23 run: |
24 BRANCH="${GITHUB_BASE_REF#refs/heads/}"
25 echo "Building for $BRANCH"
26 echo "BRANCH=$BRANCH" >> $GITHUB_ENV
27
28 - name: Determine changed packages
29 run: |
30 # only detect packages with changes
31 PKG_ROOTS=$(find . -name Makefile | \
32 grep -v ".*/src/Makefile" | \
33 sed -e 's@./\(.*\)/Makefile@\1/@')
34 CHANGES=$(git diff --diff-filter=d --name-only origin/$BRANCH)
35
36 for ROOT in $PKG_ROOTS; do
37 for CHANGE in $CHANGES; do
38 if [[ "$CHANGE" == "$ROOT"* ]]; then
39 PACKAGES+=$(echo "$ROOT" | sed -e 's@.*/\(.*\)/@\1 @')
40 break
41 fi
42 done
43 done
44
45 # fallback to test packages if nothing explicitly changes this is
46 # should run if other mechanics in packages.git changed
47 PACKAGES="${PACKAGES:-luci-app-attendedsysupgrade}"
48
49 echo "Building $PACKAGES"
50 echo "PACKAGES=$PACKAGES" >> $GITHUB_ENV
51
52 - name: Build
53 uses: openwrt/gh-action-sdk@v5
54 env:
55 ARCH: ${{ matrix.arch }}-${{ env.BRANCH }}
56 FEEDNAME: packages_ci
57
58 - name: Move created packages to project dir
59 run: cp bin/packages/${{ matrix.arch }}/packages_ci/*.ipk . || true
60
61 - name: Store packages
62 uses: actions/upload-artifact@v3
63 with:
64 name: ${{ matrix.arch}}-packages
65 path: "*.ipk"
66
67 - name: Store logs
68 uses: actions/upload-artifact@v3
69 with:
70 name: ${{ matrix.arch}}-logs
71 path: logs/