ci: gate docs job on PRs by label/path, gate test job by label too #173
No Reviewers
Labels
Clear labels
Area/CI
Area/Completions
Area/Components
Area/Config
Area/Docs
Area/Functions
Area/Integrations
Area/Prompt & Theme
Area/Scripts
Area/Tests
Compat/Breaking
Kind/Bug
Kind/Chore
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Performance
Kind/Refactor
Kind/Security
Kind/Testing
good first issue
help wanted
.github/workflows and repository automation
completions/ - tab-completion scripts
The opinionated-component system (C1-C6)
config.fish and conf.d/ - startup and environment
docs/manual/ and the generated manual, man page, and site
functions/ - user-facing functions and helpers
integrations/ - third-party tool wiring
themes/ and prompt appearance
scripts/ - standalone helper scripts
tests/ - the syntax lint and functional suite
Breaking change that won't be backward compatible
Something is not working
Tooling, dependencies, and housekeeping
Documentation changes
Improve existing functionality
New functionality
Makes existing behavior faster or lighter
Restructures code without changing behavior
This is security issue
Issue or pull request related to testing
Well-scoped and self-contained; a good place to start
Maintainer is looking for someone to pick this up
Priority
Critical
1
The priority is critical
Priority
High
2
The priority is high
Priority
Medium
3
The priority is medium
Priority
Low
4
The priority is low
Reviewed
Confirmed
1
Issue has been confirmed
Reviewed
Duplicate
2
This issue or pull request already exists
Reviewed
Invalid
3
Invalid issue
Reviewed
Won't Fix
3
This issue won't be fixed
Status
Blocked
1
Something is blocking this issue or pull request
Status
Need More Info
2
Feedback is required to reproduce issue or to continue work
Status
Abandoned
3
Somebody has started to work on this but abandoned work
Milestone
No items
No Milestone
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: rootiest/fish-config#173
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
scripts/**was entirely missing from the CI path filter — that directory never triggered CI regardless of what changed there. Added it.build-docsjob into adocsjob with two step-gated sections instead of two separate jobs (avoids passing generated files between jobs via artifacts):verify-manual.py, compile man page) — runs whenever relevant, PRs included.docsnow also runs on a PR labeledKind/DocumentationorArea/Docs, or whose diff touchesdocs/manual/**,docs/build-manual.py,docs/manualtools.py,docs/verify-manual.py, ordocs/site/**.testgains the same shape: also runs on a PR labeledKind/Testing,Area/Tests,Area/CI, orArea/Scripts, independent of what the PR actually touches.pull_requestno longer has a top-levelpaths:filter (pushkeeps its own). A label-only PR with an otherwise-irrelevant diff still needs to trigger the workflow at all for the job-level label check to run; the relevance check (diff against base, or an early exit for push/dispatch) now happens per-job in a shell step instead. Addedlabeled/unlabeledto thepull_requesttrigger types for the same reason — a label added after the PR is already open, with no new commit, still needs to re-fire this.Why
Doc-only and test-only PRs got no doc/test feedback until merge —
build-docsnever ran on a PR at all. Labels now let either job run precisely when relevant, without waiting for a matching path.Material tradeoff
docsno longerneeds: test(the old job did, gating publish on it).main's branch protection already requirestestto pass before a PR can merge, so by the time a push-to-main reaches this job,testhas necessarily already passed as a condition of getting here — re-checking it in-workflow would be redundant. The one gap this leaves is a direct admin push bypassing the PR flow entirely, which is the same trust already extended by leavingblock_admin_merge_overrideoff on the branch protection rule — not a new hole.Manual Verification Checklist
Area/CI) actually runs thetestjob's fish suite, not just a skip — check theInstall fish/Run fish config testssteps ranREADME.mdwith no relevant label — confirmtestanddocsboth skip their real steps but still report successKind/Documentationwith nodocs/changes — confirmdocs's build/verify steps run anywaymain— confirmdocs's publish steps still run as beforeworkflow_dispatchwithjob: docs— confirm it runs build+publish,job: testruns only the test job