googleapis / googleapis/release-please
`cargo-workspace` plugin excludes independent Rust package path from configured multi-package release
- Dominant language
- TypeScript
- Stars
- 7.5k
- Forks
- 588
- Avg merge
- 12h 16m
- Merged PRs (30d)
- 7
Description
Thanks for stopping by to let us know something could be better!
Please provide the following details.
#### Environment details
- OS: nixos (linux)
- Node.js version: 24.14.0
- npm version: 11.9.0
- `release-please` version: 17.5.2
## Summary
`release-please-action@v4` detects and evaluates a configured Rust package path (`editors/zed`), but after running the `cargo-workspace` plugin it is excluded from the in-scope releases and not version-bumped in the release PR.
This happens even though:
- the path is explicitly configured in `release-please-config.json`
- there are qualifying commits under that path
- the plugin logs show the path was considered
## Environment
- release-please-action: `googleapis/release-please-action@v4`
- release-please core version in logs: `17.3.0`
- repo:
- workflow run:
## Configuration
`release-please-config.json`:
```json
{
"plugins": ["cargo-workspace"],
"release-type": "rust",
"packages": {
".": {
"exclude-paths": ["crates", "editors"]
},
"crates/panache-parser": {},
"editors/code": {
"release-type": "node",
"package-name": "panache-code"
},
"editors/zed": {
"release-type": "rust",
"package-name": "panache-zed",
"extra-files": [
{
"type": "toml",
"path": "extension.toml",
"jsonpath": "$.version"
}
]
}
}
}
```
Relevant manifest entry (`.release-please-manifest.json`):
```json
{
"editors/zed": "2.32.0"
}
```
`editors/zed/Cargo.toml`:
```toml
[package]
name = "zed_panache"
version = "2.32.0"
publish = false
[workspace]
```
Root `Cargo.toml` workspace members:
```toml
[workspace]
members = ["crates/panache-parser", "crates/panache-wasm"]
```
(`editors/zed` is intentionally not a member of the root workspace.)
## Reproduction
1. Configure a monorepo with:
- root rust package (`.`),
- one rust crate in root workspace,
- one independent rust package path with its own `Cargo.toml` and `[workspace]` outside root workspace members.
2. Enable `plugins: ["cargo-workspace"]`.
3. Configure all paths explicitly in `packages`.
4. Push a fix commit touching only the independent package path:
- example commit:
- changed file: `editors/zed/src/lib.rs`
5. Run release-please action.
## Actual behavior
Logs show:
- `Building candidate release pull request for path: editors/zed`
- `Considering: 4 commits`
- `component: panache-zed`
- `running plugin: CargoWorkspace`
- `Found 3 in-scope releases`
The resulting release PR updates root/parser/code versions, but **does not** bump `editors/zed` in:
- `.release-please-manifest.json`
- `editors/zed/Cargo.toml`
- `editors/zed/extension.toml`
## Expected behavior
If a path is explicitly configured under `packages` and has qualifying commits, it should remain in-scope and get a candidate release/version bump, even if it is not part of the root Cargo workspace members.
At minimum, docs should clearly state that `cargo-workspace` restricts Rust package paths to root workspace members and will silently drop independently configured Rust paths.
## Why this seems like a bug (or at least surprising behavior)
- The path is recognized and evaluated before plugin scoping.
- The action does not fail; it silently excludes the configured path.
- Mixed ecosystems in the same config (`node` + multiple rust paths) otherwise work.
## Additional notes
If this is intended behavior, a warning that names the excluded paths and the reason (not in workspace scope) would help a lot.
Contributor guide
Assessment
This issue has not been assessed yet.