Skip to content

perf(ci): skip Windows matrix when not Windows-affecting + fail-fast#183

Closed
7xuanlu wants to merge 1 commit into
mainfrom
worktree-perf+windows-trim
Closed

perf(ci): skip Windows matrix when not Windows-affecting + fail-fast#183
7xuanlu wants to merge 1 commit into
mainfrom
worktree-perf+windows-trim

Conversation

@7xuanlu
Copy link
Copy Markdown
Owner

@7xuanlu 7xuanlu commented May 25, 2026

Follow-up to PR #182. Three free-tier wins on the Windows tail (~31min after #182).

Changes

  1. `fail-fast: true` — cancel matrix on first failure. Real bugs failing Linux/macOS no longer waste 20-30min on Windows hitting the same failure.

  2. Drop workspace lib tests on Windows. Linux + macOS catch the same cross-platform unit logic. Windows-specific behavior (paths, mcp_add, schtasks) is already covered by the `Integration tests origin-cli + origin-server` step (runs on all 3) and the schtasks install round-trip E2E. ~25min Windows saved per PR.

  3. Skip Windows job entirely when no Windows-affecting files changed. New dorny `windows` paths-filter + `detect-changes.test-oses` JSON output. Most PRs (docs, eval, server internals) skip Windows entirely.

Expected

  • Typical PR: 31min → 14-15min (Linux floor)
  • Windows-touching PR: 31min → 10-12min (Windows runs but skips workspace lib tests)
  • Real-bug PR: 31min → 8-10min (fail-fast cancels Windows after Linux/Mac fail)

Release pipeline

release.yml unchanged — release builds still cover all 5 targets on tag push.

Three free-tier follow-ups to PR #182's Windows tail (~31min after
that PR). All target PR turnaround, not release-time.

1. **`fail-fast: true`** on the test matrix. When a real bug fails
   Linux or macOS, cancel Windows — Windows would have hit the same
   failure in another 20-30min. Saves CI minutes + dev wait.

2. **Drop workspace lib tests on Windows.** Linux + macOS catch the
   same cross-platform unit logic. Windows-specific behavior is
   already covered by the `Integration tests origin-cli +
   origin-server` step (runs on Windows) and the schtasks install
   round-trip E2E. Saves ~25min Windows time per PR.

3. **Skip the Windows job entirely** when no Windows-affecting file
   changed. New dorny `windows` paths-filter lists the exact files
   that drive Windows behavior (service.rs, mcp.rs, cli_integration,
   distribution test, smoke-windows.ps1, install.sh, workspace Cargo,
   workflows). detect-changes builds `test-oses` as a JSON array;
   matrix consumes it via `fromJSON`. Common PRs (docs, eval, server
   internals) skip Windows entirely.

Expected: typical PR turnaround 31min → 14-15min (Linux floor). PRs
touching Windows paths still run Windows but skip workspace lib tests
there, expected ~10-12min Windows.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@7xuanlu
Copy link
Copy Markdown
Owner Author

7xuanlu commented May 25, 2026

Combined into PR #186 — both fixes ship together as one CI follow-up.

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