|
2 | 2 |
|
3 | 3 | Here's how Rust is currently released:
|
4 | 4 |
|
| 5 | +## A note about the `start-release.py` script |
| 6 | + |
| 7 | +Steps of the release process that require interacting with our production |
| 8 | +environment are executed through the `start-release.py` script. The script |
| 9 | +requires you to install programs and configure your local environmet, and it |
| 10 | +will guide you through the setup. |
| 11 | + |
| 12 | +The first time you run the script (or when the pre-requisites change), you will |
| 13 | +need to invoke the script *multiple times* until everything is setup correctly. |
| 14 | + |
| 15 | +`start-release.py` will always start a CI job in the background. To know when |
| 16 | +it finishes, you have to watch the logs. WHen the build finishes, a line like |
| 17 | +this will appear in the logs: |
| 18 | + |
| 19 | +``` |
| 20 | +Phase complete: UPLOAD_ARTIFACTS State: SUCCEEDED |
| 21 | +``` |
| 22 | + |
5 | 23 | ## Bump the stable version number (Friday the week before)
|
6 | 24 |
|
7 | 25 | Open a PR bumping the version number in `src/version`. `r+ rollup=never` this
|
@@ -51,6 +69,15 @@ following changes:
|
51 | 69 |
|
52 | 70 | Self-approve the PR with `r+ rollup=never p=1000`.
|
53 | 71 |
|
| 72 | +Note that we need to merge this PR as soon as possible, to maximise the |
| 73 | +pre-release testing time. If another PR is being tested by bors, and CI is not |
| 74 | +going to finish soon (use your judgement here), you can "yield" |
| 75 | +priority to the stable release PR by going into that PR and typing this |
| 76 | +comment: |
| 77 | +
|
| 78 | +> @bors retry |
| 79 | +> Yield priority to the stable release. |
| 80 | +
|
54 | 81 | ### `beta` PR
|
55 | 82 |
|
56 | 83 | Send a PR to [rust-lang/rust] targeting the new `beta` branch with these
|
@@ -79,6 +106,11 @@ You need to replace `YYYY-MM-DD` with the date of the release (Thursday).
|
79 | 106 |
|
80 | 107 | ## Master bootstrap update (Tuesday)
|
81 | 108 |
|
| 109 | +This step can only be done after the new beta has been released. The release |
| 110 | +process for the beta happens automatically at 00:00 UTC every day, so if the |
| 111 | +beta PR landed after that you will have to wait another day. You can check |
| 112 | +whether beta has been released by installing it with rustup. |
| 113 | +
|
82 | 114 | Send a PR to the master branch to:
|
83 | 115 |
|
84 | 116 | - Cherry pick the commit that ran `replace-version-placeholder`
|
@@ -109,11 +141,19 @@ Send a PR to the master branch to:
|
109 | 141 | relevant documentation block (or in a new documentation block).
|
110 | 142 | - Replace any `#[cfg_attr(not(bootstrap), $attr)]` with `#[$attr]`.
|
111 | 143 |
|
| 144 | + Note that if a PR adds `cfg(bootstrap)` and is merged between the beta PR and |
| 145 | + the master bootstrap update, the `rg` invocation will show them even though |
| 146 | + they won't have to be removed. The easiest way to handle this is to change |
| 147 | + them anyway and let CI show you the failure. |
| 148 | +
|
112 | 149 | ## Release day (Thursday)
|
113 | 150 |
|
114 |
| -Decide on a time to do the release. Let the Social Media coordinator (currently Mara) |
115 |
| -know of the time, so that she can be ready to post the release on the project's social |
116 |
| -media channels. |
| 151 | +Decide on a time to do the release. You are fully in charge of deciding when |
| 152 | +the release happens, pick the time that works best for you. The only constraint |
| 153 | +is, the release process must start and finish within the release day (in UTC). |
| 154 | +
|
| 155 | +Let the Social Media coordinator (currently Mara) know of the time, so that she |
| 156 | +can be ready to post the release on the project's social media channels. |
117 | 157 |
|
118 | 158 | As of September 2024 a release takes between 75 and 90 minutes to complete, so
|
119 | 159 | start the release process earlier enough to hit the time you planned.
|
|
0 commit comments