CI path filters !262

merged merged by cmc on 2026-09-05 05:29 UTC · krz/gitbay:ci-path-filters into main

Discussion

cmc

.gitbay/ci.yml jobs took steps, schedule and tags, with no way to say a job only matters for some paths. Every branch push queued every push job, so a one-line prose fix ran the full e2e suite.

Jobs now take paths and paths-ignore. A job runs when paths is empty or a changed file matches one; it is skipped only when every changed file matches a paths-ignore pattern, so a commit touching one ignored file and one source file still builds.

Matching is not bare path.Match: Go's * does not cross /, so .gitbay/wiki/** would match .gitbay/wiki/Home.md and silently miss .gitbay/wiki/sub/Page.md. A trailing /** is a prefix match over the directory at any depth; everything else goes to path.Match.

Filters fail open. A new branch with no diff base, a DiffFiles error, or a job declaring neither key runs the job. A filter that skips a build when it cannot tell is worse than no filter, because nothing surfaces that CI stopped running.

Prerequisite for #170, where wiki pages become ordinary commits on the default branch.

Design: docs/specs/2026-09-04-wiki-in-repo-design.md.

Closes #169