From 6237377a59df054657105530271d450bf29523a8 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Fri, 10 Jan 2025 13:22:29 -0800 Subject: [PATCH] ci: avoid "successful failure" of status check job by inspecting needs Thanks to @ryanec for this tip. --- .github/workflows/nix.yml | 20 ++++++++++++++++++-- .github/workflows/test.yml | 20 ++++++++++++++++++-- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index d557fcebd0..ced1df6df8 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -7,8 +7,24 @@ jobs: needs: - check-zig-cache-hash steps: - - name: Noop - run: echo "Required Checks Met" + - id: status + name: Determine status + run: | + results=$(tr -d '\n' <<< '${{ toJSON(needs.*.result) }}') + if ! grep -q -v -E '(failure|cancelled)' <<< "$results"; then + result="failed" + else + result="success" + fi + { + echo "result=${result}" + echo "results=${results}" + } | tee -a "$GITHUB_OUTPUT" + - if: always() && steps.status.outputs.result != 'success' + name: Check for failed status + run: | + echo "One or more required build workflows failed: ${{ steps.status.outputs.results }}" + exit 1 check-zig-cache-hash: if: github.repository == 'ghostty-org/ghostty' diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 150901cb6d..1436339f1e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,8 +26,24 @@ jobs: - typos - test-pkg-linux steps: - - name: Noop - run: echo "Required Checks Met" + - id: status + name: Determine status + run: | + results=$(tr -d '\n' <<< '${{ toJSON(needs.*.result) }}') + if ! grep -q -v -E '(failure|cancelled)' <<< "$results"; then + result="failed" + else + result="success" + fi + { + echo "result=${result}" + echo "results=${results}" + } | tee -a "$GITHUB_OUTPUT" + - if: always() && steps.status.outputs.result != 'success' + name: Check for failed status + run: | + echo "One or more required build workflows failed: ${{ steps.status.outputs.results }}" + exit 1 build: strategy: