googleapis / googleapis/release-please

`cargo-workspace` plugin excludes independent Rust package path from configured multi-package release

Open
#2,753 0 comments 0 reactions 1 assignee Claimed by @chingor13 View on GitHub
priority: p3 type: bug
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.