You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Cargo's library and its related dependencies (like `cargo-util`) are published
131
131
to [crates.io] as part of the 6-week stable release process by the [Release
132
-
team]. There is a [`publish.py` script] that is used by the Release team's
133
-
automation scripts (see <https://github.com/rust-lang/simpleinfra/>) to handle
134
-
determining which packages to publish. The build tool crates aren't published.
135
-
This runs on the specific git commit associated with the cargo submodule in the
136
-
`stable` branch in `rust-lang/rust` at the time of release.
132
+
team]. The release process involves a series of steps:
133
+
134
+
1. The Release team's automation scripts (see <https://github.com/rust-lang/simpleinfra/>) will run [`promote-release`] which will create a tag in the `rust-lang/cargo` repository associated with the version of the cargo submodule for that release.
135
+
2. The creation of a tag will trigger the [release workflow] in `rust-lang/cargo`.
136
+
3. The release workflow will run the [`publish.py` script] on the commit associated with the tag.
137
+
4. The `publish.py` script will run `cargo publish` on any crates that are not already published.
On very rare cases, the Cargo team may decide to manually publish a new
139
143
release to [crates.io]. For example, this may be necessary if there is a
140
144
problem with the current version that only affects API users, and does not
141
145
affect the `cargo` binary shipped in the stable release. In this situation,
142
146
PRs should be merged to the associated stable release branch in the cargo repo
143
147
(like `rust-1.70.0`) that fix the issue and bump the patch version of the
144
-
affected package. Then someone with permissions (currently a subset of the
145
-
Cargo team, or the Release team) should publish it manually using `cargo
146
-
publish`.
148
+
affected package. Then you need to work with the Release Team to get a release
149
+
published to crates.io.[^release-problem]
147
150
148
151
Some packages are not published automatically because they are not part of the
149
152
Rust release train. This currently only includes the [`home`] package. These
150
153
are published manually on an as-needed or as-requested basis by whoever has
151
-
permissions (currently [@ehuss] or the Release/Infra team).
154
+
permissions (currently [@ehuss] or the Release/Infra team)[^fix-manual-release].
155
+
156
+
[^release-problem]: Unfortunately there are some complications with this process. See <https://github.com/rust-lang/cargo/issues/14538> for more detail, and thoughts on how to improve this.
152
157
153
-
In the future, these manual publishing options should be integrated with
154
-
GitHub Actions so that any team member can trigger them. Likely that should
155
-
involve getting Infra to create scoped tokens that can be added as GitHub
156
-
Secrets, and setting up GitHub Actions workflows with the appropriate
157
-
permissions which can be manually triggered to launch a release.
158
+
[^fix-manual-release]: This should be fixed, see [crate ownership policy](https://forge.rust-lang.org/policies/crate-ownership.html) about removing ownership. Also see <https://github.com/rust-lang/cargo/issues/14538> for problems with tagging. In general, these should be published from GitHub Actions, but we don't have the infrastructure set up for that, yet.
0 commit comments