Repository navigation
ci: move both lane scopes off the pull_request trigger into a changes job - #23
Merged
Merged
Conversation
… job Both lanes carried their scope as a pull_request paths: filter, so a pull request outside the lane started no run and reported no check — fine until the lane is a required check, at which point branch protection waits on a report that never arrives. Each changes job runs two filter steps because the quantifier is a property of the step: 'code' is an exclusion list and carries predicate-quantifier: 'every', while 'scope' is the positive OR list the trigger used to carry and keeps the default 'some'. A single step under 'every' would turn the positive list into an AND no file satisfies. The push: triggers keep their branches: + paths: selectors unchanged.
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.
What
Every gate in this workflow now hangs off a
changesjob and a job-levelif:, and onealways-run summary job reports for the whole workflow.
changesrunsdorny/paths-filter@v4on pull requests only. On a push the step isskipped and the output falls back to
true, so the canonical branch keeps full coverage.codefilter is an exclusion list — "every changed file is NOT documentation" —so its step carries
predicate-quantifier: 'every'. The quantifier is a property of thestep, not of a filter, which is why a positive OR list (where one exists) lives in its
own step under the default
some.if: always(), depends on every gated job, and is red whenever adependency reports
failureorcancelled. A skipped dependency passes — that is thewhole point.
push:triggers are unchanged.Why
A documentation-only pull request paid for the entire gate and proved nothing.
The obvious fix — a trigger-level
paths:/paths-ignore:— is the wrong one: a workflowthat never starts reports no check at all, and branch protection then waits forever on a
report that will never arrive. Gating at the job level keeps the workflow running and lets
the summary job answer.
How to verify
*.md→ onlychangesand the summary job run,and the summary is green.
Risks
reporting on a docs-only PR by design; branch protection must require the summary, not the
individual jobs.
narrow (
**/*.md,docs/**,LICENSE*, PR/issue templates) and the summary job'sneeds:list is the structural check that nothing gated fell out of the report.