Skip to content

feat(release): gate on every named workflow, not just one - #85

Merged
trakhimenok merged 1 commit into
mainfrom
multi-workflow-gate
Sep 9, 2026
Merged

trakhimenok merged 1 commit into
mainfrom
multi-workflow-gate

Conversation

@trakhimenok

Copy link
Copy Markdown
Member

require_workflow_success took a single workflow name, so a repository with more than one quality workflow could gate only one of them. The rest were free to be red while the release proceeded. That is the same hole the input was added to close, just narrower.

The change

Accept a comma-separated list and require every named workflow to be green:

require_workflow_success: 'Go CI, Integration tests'

A single name behaves exactly as before, so no consumer needs to change.

The guard checks all of them and reports every one that is not green rather than stopping at the first, so one run shows the whole picture instead of hiding the second failure behind the first. The timeout applies per named workflow, which the input description now says.

Situation Result
Every named workflow green or skipped release proceeds
Any one not green refused, and the error names each one that was not
A name matching no workflow refused, listing what does exist
A named workflow with no run for the commit skipped as not applicable, with a notice

Verification

  • Tests cover all-green and one-red-among-several, asserting the failure names the red workflow and still reports the green one. Confirmed to fail when the script is sabotaged to gate only the first name, so they cannot pass against the old behaviour.
  • The script embedded in the YAML is byte-identical to one exercised against live GitHub data across three cases: single name green, two names both green, and two names with one red. The mixed case correctly refused while reporting the green one.
  • Full suite green.

🤖 Generated with Claude Code

require_workflow_success took a single workflow name, so a repository with
more than one quality workflow could only gate one of them. The rest were
free to be red while the release proceeded, which is the same hole the input
was added to close, just narrower.

Accept a comma-separated list and require every named workflow to be green.
A single name behaves exactly as before, so no consumer needs to change.

The guard checks all of them and reports every one that is not green rather
than stopping at the first, so one run shows the whole picture instead of
hiding the second failure behind the first. The timeout applies per named
workflow, which the input description now says.

Tests cover both the all-green and one-red-among-several cases, and were
confirmed to fail when the script is sabotaged to gate only the first name.
The script embedded in the YAML is byte-identical to the one exercised
against live GitHub data across single-name, all-green and mixed cases.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@trakhimenok
trakhimenok merged commit 6613e9a into main Sep 9, 2026
7 checks passed
@trakhimenok
trakhimenok deleted the multi-workflow-gate branch September 9, 2026 16:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant