ci: allow custom kernel and target jobs based on labels
[openwrt/staging/noltari.git] / .github / workflows / label-kernel.yml
diff --git a/.github/workflows/label-kernel.yml b/.github/workflows/label-kernel.yml
new file mode 100644 (file)
index 0000000..1156e0a
--- /dev/null
@@ -0,0 +1,45 @@
+# ci:kernel:x86:64 is going to trigger CI kernel check jobs for x86/64 target
+
+name: Build kernel and check patches for target specified in labels
+on:
+  pull_request:
+    types:
+      - labeled
+
+jobs:
+  set_target:
+    if: startsWith(github.event.label.name, 'ci:kernel:')
+    name: Set target
+    runs-on: ubuntu-latest
+    outputs:
+      target: ${{ steps.set_target.outputs.target }}
+
+    steps:
+      - name: Set target
+        id: set_target
+        env:
+          CI_EVENT_LABEL_NAME: ${{ github.event.label.name }}
+        run: |
+          echo "$CI_EVENT_LABEL_NAME" | sed -n 's/.*:\(.*\):\(.*\)$/target="\1\/\2"/p' | tee --append $GITHUB_OUTPUT
+
+  build_kernel:
+    name: Build Kernel with external toolchain
+    needs: set_target
+    permissions:
+      contents: read
+      packages: read
+    uses: ./.github/workflows/build.yml
+    with:
+      target: ${{ needs.set_target.outputs.target }}
+      build_kernel: true
+      build_all_kmods: true
+
+  check-kernel-patches:
+    name: Check Kernel patches
+    needs: set_target
+    permissions:
+      contents: read
+      packages: read
+    uses: ./.github/workflows/check-kernel-patches.yml
+    with:
+      target: ${{ needs.set_target.outputs.target }}