release: fix Rust publish plan for split crates
releases-note/fixrustrelease
During the `v0.56.0` release, the Rust release workflow could not complete and required manual recovery.
Observed issues:
- `crates-io-auth-action` trusted publishing tokens cannot create new crates, so first-time split crates such as `opendal-core`, `opendal-service-*`, and `opendal-layer-*` failed with `Trusted Publishing tokens do not support creating new crates`.
- `.github/scripts/release_rust/plan.py` only considers normal/build dependencies. crates.io still resolves dev-dependencies during packaging, so the plan published some crates too early. For example, `opendal-layer-route` needs `opendal-service-fs` as a dev-dependency.
- `core/testkit` is omitted from `PUBLISH_GLOBS`, but top-level `opendal` depends on `opendal-testkit = 0.56.0` through the `tests` feature.
- `opendal-testkit` has `publish = false`, which makes top-level `opendal` impossible to publish as-is.
- There are dev-only first-publish cycles, including `opendal-layer-retry` <-> `opendal-layer-timeout` and `opendal-service-foyer` -> `opendal`, that need an explicit release strategy.
The manual recovery was to publish crates in a dev-dependency-aware order, temporarily break the dev-only cycles for initial crate creation, publish `opendal-testkit`, then publish top-level `opendal` and the integrations.
We should update the Rust release automation so future releases can run without manual manifest edits or ad hoc ordering.
0 条评论