fix: build all crates individually as part of CI (#833)
I discovered that `cargo build` worked for the entire workspace, but not for the `mcp-client` or `core` crates. * `mcp-client` failed to build because it underspecified the set of features it needed from `tokio`. * `core` failed to build because it was using a "feature" of its own crate in the default, no-feature version. This PR fixes the builds and adds a check in CI to defend against this sort of thing going forward.
This commit is contained in:
9
.github/workflows/rust-ci.yml
vendored
9
.github/workflows/rust-ci.yml
vendored
@@ -83,6 +83,15 @@ jobs:
|
||||
- name: cargo clippy
|
||||
run: cargo clippy --target ${{ matrix.target }} --all-features -- -D warnings || echo "FAILED=${FAILED:+$FAILED, }cargo clippy" >> $GITHUB_ENV
|
||||
|
||||
# Running `cargo build` from the workspace root builds the workspace using
|
||||
# the union of all features from third-party crates. This can mask errors
|
||||
# where individual crates have underspecified features. To avoid this, we
|
||||
# run `cargo build` for each crate individually, though because this is
|
||||
# slower, we only do this for the x86_64-unknown-linux-gnu target.
|
||||
- name: cargo build individual crates
|
||||
if: ${{ matrix.target == 'x86_64-unknown-linux-gnu' }}
|
||||
run: find . -name Cargo.toml -mindepth 2 -maxdepth 2 -print0 | xargs -0 -n1 -I{} bash -c 'cd "$(dirname "{}")" && cargo build' || echo "FAILED=${FAILED:+$FAILED, }cargo build individual crates" >> $GITHUB_ENV
|
||||
|
||||
- name: cargo test
|
||||
run: cargo test --target ${{ matrix.target }} || echo "FAILED=${FAILED:+$FAILED, }cargo test" >> $GITHUB_ENV
|
||||
|
||||
|
||||
Reference in New Issue
Block a user