Summary
Skip expensive linting and testing jobs when only non-source files change (docs, config, etc). Uses dorny/paths-filter to detect source-affecting changes.
Details
- Adds
changes detection job that outputs whether src/, test/, or build-related files changed
- Gates lint, build-check, and test jobs to skip when changes don't affect source
- Fixes commit-lint false positives on squash-merges to main
- Guards Coveralls parallel-finished signal to only fire when tests ran
- Bumps GitHub Actions to v4
Implementation
Related to: #565 (PR implementing this change)
Why job-level filter instead of trigger-level?
GitHub only satisfies required status checks when a job actually runs. A trigger-level paths: filter skips the entire workflow, leaving required checks unsatisfied and blocking PRs. This job-level approach keeps workflow running but skips expensive jobs internally.
Summary
Skip expensive linting and testing jobs when only non-source files change (docs, config, etc). Uses
dorny/paths-filterto detect source-affecting changes.Details
changesdetection job that outputs whether src/, test/, or build-related files changedImplementation
Related to: #565 (PR implementing this change)
Why job-level filter instead of trigger-level?
GitHub only satisfies required status checks when a job actually runs. A trigger-level
paths:filter skips the entire workflow, leaving required checks unsatisfied and blocking PRs. This job-level approach keeps workflow running but skips expensive jobs internally.