ci: split the pipeline into path-filtered suites - #22
Conversation
Toolchain, uv, pnpm and pre-commit setup were repeated inline. The pre-commit action takes a SKIP list so each suite runs only its own hooks while the definitions stay in .pre-commit-config.yaml.
ci.yml now detects changed paths and calls only the affected reusable workflows, so a Rust-only PR skips pnpm and a docs-only PR skips the workspace build. Pushes to master still run everything. CI status is the single required check, since skipped jobs report nothing.
Also fixes the SC2162 it flags in cleanup.yml.
|
Warning Review limit reached
Next review available in: 26 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (13)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Every PR currently runs the whole pipeline. The
lintjob alone installs the Rust toolchain, uv, pnpm and Node and does a fullpnpm install— even for a PR that only touchescrates/. This restructuresci.ymlinto an orchestrator that runs only what a change can affect.Structure follows the pattern in
taskito: achangesjob, reusable per-suite workflows, and a single aggregating status check.Layout
crates/, Cargo manifestsdagron/,tests/python/,pyproject.tomldocs/Python depends on the shared Rust paths on purpose: the bindings are compiled into the wheel, so a
crates/change can break Python at runtime with the Python sources untouched. Docs deliberately does not — it is MDX and TypeScript with no build-time dependency on the workspace.Pushes to
masterandworkflow_dispatchignore the filter and run everything, so merged code is always covered in full. Coverage is delayed to merge, never lost.Lint hooks stay single-source
Rather than reimplementing ruff/mypy/clippy invocations in CI — which would let CI drift from
.pre-commit-config.yaml, since the hook revs differ from the versions in the dev group — each suite runspre-commitwith aSKIPlist of the hooks it does not own.SKIPis an exclusion rather than an inclusion deliberately: a newly added hook runs in every suite until someone skips it. That fails loudly, where an inclusion list would silently leave it unchecked.Verified each hook lands in exactly one suite, with the union covering all seven:
Also drops the standalone
cargo fmt --all --checkstep, which duplicated thecargo-fmthook.CI status
Every suite is skippable, and a skipped job reports nothing to branch protection — so the suites cannot be required checks individually.
CI statusalways runs and fails if anything it needs did not succeed or skip.Branch protection needs updating to require
CI statusinstead of the old per-job checks, otherwise protection silently passes on a PR where a suite failed.Matrix
The Python matrix is trimmed on PRs to Linux on both versions plus one Windows cell — Windows is where the platform-specific failures have actually been (#18). The full 3×2 still runs on every push to
master. Flagging it since it is a deliberate coverage-vs-latency trade; happy to keep the full matrix on PRs if you would rather.Verification
actionlintclean across all workflows and composite actions (run locally at v1.7.12). It also surfaced a pre-existing SC2162 incleanup.yml, fixed here, which would otherwise have failed the new job on its first run.SKIPscoping exercised locally — output above.dorny/paths-filter@v4andraven-actions/actionlint@v2confirmed to resolve.