diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 81e4c0b..e9a3fd5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -132,3 +132,21 @@ jobs: steps: - if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped') run: exit 1 + + # The one status check branch protection requires, + # named the same in every P4suta repository. + # It passes only when every job it needs succeeded or was skipped. + required: + name: required + if: always() + needs: [ci-required] + runs-on: ubuntu-latest + timeout-minutes: 5 + permissions: {} + steps: + - name: Fail unless every needed job succeeded or was skipped + env: + RESULTS: ${{ toJSON(needs.*.result) }} + run: | + echo "${RESULTS}" + jq -e 'all(.[]; IN("success", "skipped"))' <<< "${RESULTS}"