ci: keep Windows and Darwin checks satisfiable on docs-only changes #190

Merged
natsukium merged 3 commits from ci/docs-only-noop into main 2026-09-07 19:16:54 +09:00
Owner

Fixes the docs-only merge block (405) reported for #181–#183.

Branch protection requires windows /** and darwin /**, but those workflows were skipped entirely via paths-ignore on docs-only diffs, so the required statuses never appeared.

  • Remove workflow-level paths-ignore from windows.yml/darwin.yml
  • Gate heavy jobs behind a changes job (nix, fetch-depth: 0) that diffs the PR base / push before against HEAD (merge-base aware). Docs-only (docs/**, **/*.md) → relevant=false.
  • Heavy jobs run only when relevant == 'true'; a *-noop job runs on relevant == 'false' and succeeds, so the workflow always reports at least one successful status matching /**.
  • windows-package keeps its push-only gate plus relevant.

Refs #181 #182 #183

Fixes the docs-only merge block (405) reported for #181–#183. Branch protection requires `windows /**` and `darwin /**`, but those workflows were skipped entirely via `paths-ignore` on docs-only diffs, so the required statuses never appeared. - Remove workflow-level `paths-ignore` from `windows.yml`/`darwin.yml` - Gate heavy jobs behind a `changes` job (nix, `fetch-depth: 0`) that diffs the PR base / push `before` against `HEAD` (merge-base aware). Docs-only (`docs/**`, `**/*.md`) → `relevant=false`. - Heavy jobs run only when `relevant == 'true'`; a `*-noop` job runs on `relevant == 'false'` and succeeds, so the workflow always reports at least one successful status matching `/**`. - `windows-package` keeps its `push`-only gate plus `relevant`. Refs #181 #182 #183
ci: keep Windows and Darwin checks satisfiable on docs-only changes
Some checks failed
bench / Criterion full-suite snapshot (pull_request) Has been skipped
fuzz / cargo fuzz nightly long-run (pull_request) Has been skipped
darwin / detect relevant changes (pull_request) Successful in 4s
darwin / darwin docs-only no-op (pull_request) Has been skipped
fuzz / cargo fuzz smoke (per target) (pull_request) Successful in 1m58s
pr / nix flake check (pull_request) Successful in 24s
bench / Criterion regression gate (pull_request) Failing after 2m26s
pr / cargo build / clippy / test / deny (pull_request) Successful in 1m37s
pr / wire schema is compatible with the base (pull_request) Successful in 8s
pr / frontend smoke (x86_64-linux) (pull_request) Has been cancelled
darwin / build felis (aarch64-darwin) (pull_request) Successful in 51s
pr / publish felis (x86_64-linux) (pull_request) Has been cancelled
windows / detect relevant changes (pull_request) Has been cancelled
windows / cargo clippy (Windows cross) (pull_request) Has been cancelled
windows / cargo nextest (Windows) (pull_request) Has been cancelled
windows / frontend smoke (Windows) (pull_request) Has been cancelled
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been cancelled
windows / windows docs-only no-op (pull_request) Has been cancelled
2c3437aa58
Branch protection requires windows /** and darwin /**, but those
workflows were skipped entirely via paths-ignore on docs-only diffs, so
the required statuses never appeared and the merge API returned 405.

Remove workflow-level paths-ignore and gate the heavy jobs behind a
nix-hosted changes gate that diffs the PR base (or push before) against
HEAD. When no relevant file remains the workflow still reports a
successful no-op job, satisfying the /** requirement while avoiding
Windows/macOS minutes. Code changes continue to run the full matrix.

Refs #181 #182 #183

Assisted-by: Pi Coding Agent:Muse Spark 1.2
ci: extract docs-only detection to composite action
Some checks failed
pr / nix flake check (pull_request) Successful in 26s
pr / wire schema is compatible with the base (pull_request) Has been cancelled
pr / frontend smoke (x86_64-linux) (pull_request) Has been cancelled
bench / Criterion full-suite snapshot (pull_request) Has been skipped
fuzz / cargo fuzz nightly long-run (pull_request) Has been skipped
bench / Criterion regression gate (pull_request) Successful in 2m5s
darwin / detect relevant changes (pull_request) Failing after 0s
darwin / build felis (aarch64-darwin) (pull_request) Has been skipped
darwin / darwin docs-only no-op (pull_request) Has been skipped
fuzz / cargo fuzz smoke (per target) (pull_request) Successful in 1m41s
pr / publish felis (x86_64-linux) (pull_request) Has been cancelled
windows / detect relevant changes (pull_request) Has been cancelled
windows / cargo clippy (Windows cross) (pull_request) Has been cancelled
windows / cargo nextest (Windows) (pull_request) Has been cancelled
windows / frontend smoke (Windows) (pull_request) Has been cancelled
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been cancelled
windows / windows docs-only no-op (pull_request) Has been cancelled
pr / cargo build / clippy / test / deny (pull_request) Has been cancelled
01b80624cb
Share the git-diff based relevant check between windows and darwin
via .forgejo/actions/detect-changes. The inline script was duplicated
verbatim; a composite action keeps the workflow files to one line and
makes the ignore set (docs/**, **/*.md) a single definition, matching
the existing cargo-env pattern.

Alternative considered: dorny/paths-filter@v3 does run on Forgejo
(fetch-depth: 0 fallback to git, no token needed) but adds an external
download and an extra filter language for a 10-line predicate. The
self-contained checkout+bash keeps the CI hermetic and auditable.

No behavior change; the changes gate and docs-only no-op remain.

Assisted-by: Pi Coding Agent:Muse Spark 1.2
ci: use dorny/paths-filter@v4 for docs-only gate
All checks were successful
darwin / darwin docs-only no-op (pull_request) Has been skipped
darwin / build felis (aarch64-darwin) (pull_request) Successful in 50s
fuzz / cargo fuzz smoke (per target) (pull_request) Successful in 2m14s
pr / nix flake check (pull_request) Successful in 31s
pr / cargo build / clippy / test / deny (pull_request) Successful in 2m12s
pr / wire schema is compatible with the base (pull_request) Successful in 8s
pr / frontend smoke (x86_64-linux) (pull_request) Successful in 1m56s
pr / publish felis (x86_64-linux) (pull_request) Has been skipped
windows / detect relevant changes (pull_request) Successful in 4s
windows / windows docs-only no-op (pull_request) Has been skipped
windows / cargo clippy (Windows cross) (pull_request) Successful in 45s
windows / cargo nextest (Windows) (pull_request) Successful in 15m4s
windows / frontend smoke (Windows) (pull_request) Successful in 2m50s
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been skipped
fuzz / cargo fuzz nightly long-run (push) Has been skipped
darwin / detect relevant changes (push) Successful in 4s
darwin / darwin docs-only no-op (push) Has been skipped
darwin / build felis (aarch64-darwin) (push) Successful in 13s
fuzz / cargo fuzz smoke (per target) (push) Successful in 1m18s
pr / nix flake check (push) Successful in 6s
pr / cargo build / clippy / test / deny (push) Successful in 2m8s
pr / wire schema is compatible with the base (push) Successful in 9s
pr / frontend smoke (x86_64-linux) (push) Successful in 6s
windows / detect relevant changes (push) Successful in 3s
windows / windows docs-only no-op (push) Has been skipped
pr / publish felis (x86_64-linux) (push) Successful in 11s
windows / cargo clippy (Windows cross) (push) Successful in 22s
windows / cargo nextest (Windows) (push) Successful in 6m29s
windows / frontend smoke (Windows) (push) Successful in 1m51s
windows / package felis (x86_64-pc-windows-msvc) (push) Successful in 1m43s
b66856a584
Prefer the well-known dorny/paths-filter@v4 over the bespoke
checkout+bash composite. Both workflows now run a single changes job
via dorny with predicate-quantifier some-with-excludes:

  relevant:
    - '**'
    - '!docs/**'
    - '!**/*.md'
    - '!*.md'

This mirrors the previous docs/**, **/*.md + *.md ignore set and keeps
the /** branch protection satisfiable via the docs-only no-op jobs.
Requires pull-requests: read for PR API mode (push falls back to git).

Remove .forgejo/actions/detect-changes in favor of the external action.

Assisted-by: Pi Coding Agent:Muse Spark 1.2
natsukium deleted branch ci/docs-only-noop 2026-09-07 19:16:54 +09:00
Sign in to join this conversation.
No description provided.