CI: Extract the OpenWrt building to own sub workflow
[openwrt/openwrt.git] / .github / workflows / kernel.yml
1 name: Build Kernel
2
3 on:
4 pull_request:
5 paths:
6 - '.github/workflows/kernel.yml'
7 - 'include/kernel*'
8 - 'package/kernel/**'
9 - 'target/linux/generic/**'
10 push:
11 paths:
12 - '.github/workflows/kernel.yml'
13 - 'include/kernel*'
14 - 'package/kernel/**'
15 - 'target/linux/generic/**'
16
17 permissions:
18 contents: read
19
20 jobs:
21 determine_targets:
22 name: Set targets
23 runs-on: ubuntu-latest
24 outputs:
25 target: ${{ steps.find_targets.outputs.target }}
26
27 steps:
28 - name: Checkout
29 uses: actions/checkout@v3
30
31 - name: Set targets
32 id: find_targets
33 run: |
34 export TARGETS="$(perl ./scripts/dump-target-info.pl targets 2>/dev/null \
35 | sort -u -t '/' -k1,1 \
36 | awk '{ print $1 }')"
37
38 JSON='['
39 FIRST=1
40 for TARGET in $TARGETS; do
41 [[ $FIRST -ne 1 ]] && JSON="$JSON"','
42 JSON="$JSON"'"'"${TARGET}"'"'
43 FIRST=0
44 done
45 JSON="$JSON"']'
46
47 echo -e "\n---- targets ----\n"
48 echo "$JSON"
49 echo -e "\n---- targets ----\n"
50
51 echo "target=$JSON" >> $GITHUB_OUTPUT
52
53 build:
54 name: Build Kernel with external toolchain
55 needs: determine_targets
56 permissions:
57 contents: read
58 packages: read
59 strategy:
60 fail-fast: False
61 matrix:
62 target: ${{fromJson(needs.determine_targets.outputs.target)}}
63 uses: ./.github/workflows/build.yml
64 with:
65 target: ${{ matrix.target }}
66 build_all_kmods: true
67 include_feeds: true
68
69 check-kernel-patches:
70 name: Check Kernel patches
71 needs: determine_targets
72 permissions:
73 contents: read
74 packages: read
75 strategy:
76 fail-fast: False
77 matrix:
78 target: ${{fromJson(needs.determine_targets.outputs.target)}}
79 uses: ./.github/workflows/check-kernel-patches.yml
80 with:
81 target: ${{ matrix.target }}
82