From b97015b791ca021ae6a1719940823c42fd87eeac Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sat, 9 Nov 2024 15:04:51 +0100 Subject: [PATCH] ci: ci/all must always run, and fail if any job has status "fail" or "canceled" (#47517) This means it succeeds when a both jobs have either status "success" or status "skipped" --- .github/workflows/ci.yaml | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 2024014f1bb..a7ceb1bd8e4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -83,10 +83,17 @@ jobs: all-prechecks: needs: [ prechecks ] + if: ${{ always() }} runs-on: ubuntu-latest steps: - name: Success - run: "true" + run: | + if [ "${{ needs.prechecks.result }}" == "failure" ] || [ "${{ needs.prechecks.result }}" == "canceled" ]; then + echo "Unit tests failed." + exit 1 + else + exit 0 + fi coverage: needs: [ unit-tests, prechecks ] @@ -94,8 +101,19 @@ jobs: secrets: inherit all: - needs: [ coverage, bootstrap ] + needs: [ unit-tests, coverage, bootstrap ] + if: ${{ always() }} runs-on: ubuntu-latest + # See https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/accessing-contextual-information-about-workflow-runs#needs-context steps: - - name: Success - run: "true" + - name: Status summary + run: | + if [ "${{ needs.unit-tests.result }}" == "failure" ] || [ "${{ needs.unit-tests.result }}" == "canceled" ]; then + echo "Unit tests failed." + exit 1 + elif [ "${{ needs.bootstrap.result }}" == "failure" ] || [ "${{ needs.bootstrap.result }}" == "canceled" ]; then + echo "Bootstrap tests failed." + exit 1 + else + exit 0 + fi