ci: overhaul CI pipeline with detect-changes, sccache, MSRV, and doc-tests#113
Merged
ci: overhaul CI pipeline with detect-changes, sccache, MSRV, and doc-tests#113
Conversation
e31c2f9 to
b24ab7f
Compare
- add detect-changes job to skip full CI on docs-only pushes - replace OS matrix with single ubuntu-latest runner - add sccache for faster compilation in test and coverage jobs - fix fmt job to use dtolnay/rust-toolchain nightly instead of rustup command - align all commands with CLAUDE.md: add --workspace flag to clippy and nextest - add concurrency group to cancel superseded runs - restrict coverage to main branch pushes only - add msrv job pinned to rust-version 1.88 from Cargo.toml - improve ci-gate to list all jobs explicitly
- Add detect-changes job with dorny/paths-filter to skip CI on non-code changes - Add concurrency group with cancel-in-progress to avoid redundant runs - Replace cross-platform OS matrix with single ubuntu-latest runner - Add sccache via mozilla-actions/sccache-action to test and coverage jobs - Add shared-key to rust-cache for cross-job cache reuse - Add MSRV check job (Rust 1.88) with cargo check --locked - Add cargo test --doc step to rustdoc job - Switch coverage to cargo llvm-cov nextest for consistency with test job - Fix ci-gate logic: check each job result explicitly instead of needs.*.result - Add timeout-minutes to all jobs - Set global RUSTFLAGS="-D warnings"; reset to "" in coverage job
build no longer waits for fmt/clippy; test and coverage download the prebuilt mcpls binary from the build job artifact instead of recompiling.
…e jobs Add a `build` job that compiles the debug binary and uploads it as an artifact for use by the new `test-e2e` job. Replace the single `test` job with three parallel jobs: `test` (--lib), `test-integration` (--tests), and `test-e2e` (--run-ignored all -E 'test(e2e)'). Update `ci-gate` to track all new jobs.
Remove sccache from coverage job: the compilation cache benefit is minimal for a single instrumented build and adds action overhead. Swatinem/rust-cache now caches the full target/ directory for coverage. build-tests and build jobs retain sccache + cache-targets=false.
When applicable_configs is empty (no servers match the workspace), the server now starts in protocol-only mode instead of returning NoServersAvailable. MCP tools that require LSP will still fail at call time, but protocol handshake (initialize, list_tools) works.
When lsp_servers is empty the server starts in protocol-only mode instead of returning NoServersAvailable. MCP tools that require LSP will still fail at call time, but protocol handshake (initialize, list_tools) works without any LSP server present. Update two tests that expected the old NoServersAvailable behavior.
480d2ff to
4673f79
Compare
Run build-tests, build, test, test-integration, and test-e2e on ubuntu-latest, macos-latest, and windows-latest. Artifact names are suffixed with the OS name to keep them unique across matrix legs. The Make binary executable step is skipped on Windows.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
detect-changesjob (dorny/paths-filter) to skip CI on non-code changes (docs, config files)cancel-in-progressto avoid redundant runs on rapid pushesubuntu-latestrunner (project builds fast)testandcoveragejobs for build cachingmsrvjob: checks compilation on Rust 1.88 with--lockedcargo test --docstep torustdocjobcargo llvm-cov nextestfor consistency with test jobci-gatelogic: check each job result explicitly (handlesskippedfromdetect-changes)timeout-minutesto all jobsRUSTFLAGS="-D warnings"; reset to""in coverage job to avoid conflict withinstrument-coverageTest plan