From 9173d0bd4d7c7d2477c666a0949238444ee87897 Mon Sep 17 00:00:00 2001 From: Vincent Demeester Date: Mon, 23 Feb 2026 16:13:40 +0100 Subject: [PATCH] Add CI summary fan-in job to presubmit CI Add a ci-summary job that depends on all CI jobs and acts as a single required check for branch protection. This replaces having to configure individual job names as required checks. The job treats both 'success' and 'skipped' as passing states, only failing when a job returns 'failure' or 'cancelled'. Signed-off-by: Vincent Demeester --- .github/workflows/ci.yaml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ff57b5d75e..2591f5b680 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -108,3 +108,39 @@ jobs: e2e-tests: needs: [build] uses: ./.github/workflows/e2e-matrix.yml + + ci-summary: + name: CI summary + if: always() + needs: + - build + - linting + - tests + - generated + - multi-arch-build + - e2e-tests + runs-on: ubuntu-latest + steps: + - name: Check job results + run: | + echo "build: ${{ needs.build.result }}" + echo "linting: ${{ needs.linting.result }}" + echo "tests: ${{ needs.tests.result }}" + echo "generated: ${{ needs.generated.result }}" + echo "multi-arch-build: ${{ needs.multi-arch-build.result }}" + echo "e2e-tests: ${{ needs.e2e-tests.result }}" + results=( + "${{ needs.build.result }}" + "${{ needs.linting.result }}" + "${{ needs.tests.result }}" + "${{ needs.generated.result }}" + "${{ needs.multi-arch-build.result }}" + "${{ needs.e2e-tests.result }}" + ) + for result in "${results[@]}"; do + if [[ "$result" != "success" && "$result" != "skipped" ]]; then + echo "One or more jobs failed" + exit 1 + fi + done + echo "All jobs passed or were skipped"