From 8d7261bfe012809c9749f95ed753eb4f680248b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E5=B0=94=E7=9B=96=20=7C=7C=E2=86=93?= Date: Sat, 29 Aug 2026 17:52:41 +0300 Subject: [PATCH] Keep the binaries and promote jobs running when the corpus gate is skipped --- .github/workflows/release.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c066f0ec..0555a00b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -133,7 +133,12 @@ jobs: binaries: needs: version - if: needs.version.outputs.created == 'true' + # `!cancelled()` is load-bearing: `version` runs past a SKIPPED `corpus` (nightly) via its own + # status-function `if`, but without a status function here GitHub would propagate that skip down the + # `needs` chain and skip `binaries` regardless of `created` — so a nightly release got no binaries. + # With it, the skip no longer propagates and the real gate (`version` succeeded, a release was cut) + # decides. `created` is empty when `version` itself was skipped (rc/latest/stable with a red corpus). + if: ${{ !cancelled() && needs.version.result == 'success' && needs.version.outputs.created == 'true' }} uses: ./.github/workflows/build-binaries.yml permissions: contents: write @@ -150,7 +155,9 @@ jobs: # The bare `` tags don't collide with the `-` tags `versioning` matches on. promote: needs: [version, binaries] - if: needs.version.outputs.created == 'true' + # Same status-function requirement as `binaries`: only mirror the rolling ring release when the + # binaries actually built (`binaries` succeeded — which already implies a release was cut). + if: ${{ !cancelled() && needs.binaries.result == 'success' }} runs-on: ubuntu-24.04 permissions: contents: write