Skip to content

ci(build): PR-only path filter for web-static & qt-webengine (slice 1) - #897

Open
frstrtr wants to merge 1 commit into
masterfrom
ci-steward/ci-path-filter
Open

ci(build): PR-only path filter for web-static & qt-webengine (slice 1)#897
frstrtr wants to merge 1 commit into
masterfrom
ci-steward/ci-path-filter

Conversation

@frstrtr

@frstrtr frstrtr commented Jul 26, 2026

Copy link
Copy Markdown
Owner

ci(build): PR-only path filter for web-static & qt-webengine

Adds a changes job (dorny/paths-filter) that lets the two costliest
non-required jobs skip on a PR when their inputs did not change.
"Web-static verify" is our top recurring gate-drag (wedged 4h44m on #930,
forced two manual run cancels, left #880 with a CANCELLED required check).

(a) The filter CANNOT skip a job whose inputs changed

Explicit trigger paths (a PR touching ANY of these RUNS the job):

web-static runs when the PR touches:

  • web-static/** (the entire web source + visual harness — the job runs npm run visual and uploads from web-static/sharechain-explorer/tests/visual/out/, all under this prefix)
  • .github/workflows/build.yml (self-referential: any change to this workflow re-runs it)

qt-webengine runs when the PR touches:

  • ui/** (the job configures/builds ui/c2pool-qt)
  • src/**, CMakeLists.txt, conanfile*, cmake/** (over-inclusive on the C++/build surface — errs toward running)
  • .github/workflows/build.yml

The filter is bypassed entirely on push, tag, and workflow_dispatch
(|| github.event_name != 'pull_request'), so the master rollup and
release builds always run the full set and stay authoritative.

(b) No per-coin source-presence guard relaxed (#47 protection intact)

Only web-static and qt-webengine gain needs: changes + an if:.
No per-coin build/smoke job and none of the #47 source-presence guards
are touched. Diff is a single file (.github/workflows/build.yml, +35).

Safety

None of the gated jobs are branch-protection required checks and nothing
needs: them — a skip reports as Skipped, never a false-green on a
required gate, with no downstream cascade. Required coin/consensus gates
are deliberately left unfiltered (that needs an always-run aggregator +
branch-protection re-point, tracked separately).

On pull_request, skip the web-static verify and Qt WebEngine leak-gate jobs
when their inputs did not change (web-static/** for web; ui/**, src/**, and
the build system for qt). On push, tag and workflow_dispatch the filter is
bypassed and every job runs, so the master rollup and release builds remain
authoritative.

None of the gated jobs are branch-protection required checks and nothing
needs: them, so a skip reports as Skipped (not a false-green on a required
gate) with no downstream cascade. Required coin/consensus gates are left
unfiltered; filtering those safely needs an always-run aggregator plus a
branch-protection re-point (operator action), tracked separately.
@frstrtr
frstrtr force-pushed the ci-steward/ci-path-filter branch from b6920e2 to e03ea0d Compare July 28, 2026 04:09
@frstrtr
frstrtr marked this pull request as ready for review July 28, 2026 04:09
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