Open
Conversation
The ci-pass step treated needs.build.result != "success" as failure, which made every release-bot push fail: build's own if: skips on ci(release) commits to prevent publish loops, so build.result is "skipped" by design on those runs. Replace the per-job result checks with the standard contains pattern over needs.*.result. Failure and cancelled still fail the gate; skipped is tolerated symmetrically for build and integration. New needed jobs added later inherit the rule without further edits.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Checklist
PR Type
What is the current behavior?
Every push to
masterwhose head commit is the release bot'sci(release): publishends with a red ✗ on the workflow run. Recent examples: run 24958214443, run 24908348004.Root cause is in
.github/workflows/ci.yml:buildjob hasif: github.event_name == 'workflow_dispatch' || (!contains(github.event.head_commit.message, 'ci(release)'))— it deliberately skips on the publish bot's commits to prevent infinite publish loops.ci-passstep then fails because it treatsneeds.build.result != "success"as failure, with no allowance forskipped. Note the asymmetry:integrationis already allowed to beskipped(when no tests are discovered), butbuildis not.The actual publish step has already run and pushed package versions before this red run begins, so impact is purely cosmetic noise on the master status, but it's misleading and tarnishes the branch-protection signal.
Issue Number: N/A
What is the new behavior?
Replace the per-job string comparisons with GitHub's idiomatic pattern:
Behavior matrix:
build.resultintegration.resultci(release): publishcommit (build'sif:skips it)Why
skippedis safe to tolerate forbuild: in GitHub Actions,skippedonly occurs when the job's ownif:evaluates false.buildhas noneeds:, so it can't cascade-skip. A genuine build problem still producesfailureorcancelled, both of which still trip the guard.Side benefits:
buildandintegration.ci-passlater inherit the rule with no edit.if: always()on the job is preserved (load-bearing per.github/AGENTS.md: branch protection needs the check to always report).Does this PR introduce a breaking change?
Other information
The alternative — adding the same
ci(release)if:predicate frombuildontoci-pass— would also fix the symptom, but it makesci-passitself skip on release commits, which can break required-status-check configurations in branch protection. Keepingci-passalways-running and toleratingskippedresults is the lighter touch.