diff options
Diffstat (limited to 'docs/dev/README.md')
-rw-r--r-- | docs/dev/README.md | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/docs/dev/README.md b/docs/dev/README.md index eab21a765..16b23adc6 100644 --- a/docs/dev/README.md +++ b/docs/dev/README.md | |||
@@ -24,7 +24,7 @@ Rust Analyzer is a part of [RLS-2.0 working | |||
24 | group](https://github.com/rust-lang/compiler-team/tree/6a769c13656c0a6959ebc09e7b1f7c09b86fb9c0/working-groups/rls-2.0). | 24 | group](https://github.com/rust-lang/compiler-team/tree/6a769c13656c0a6959ebc09e7b1f7c09b86fb9c0/working-groups/rls-2.0). |
25 | Discussion happens in this Zulip stream: | 25 | Discussion happens in this Zulip stream: |
26 | 26 | ||
27 | https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0 | 27 | https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frust-analyzer |
28 | 28 | ||
29 | # Issue Labels | 29 | # Issue Labels |
30 | 30 | ||
@@ -32,6 +32,8 @@ https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0 | |||
32 | are good issues to get into the project. | 32 | are good issues to get into the project. |
33 | * [E-has-instructions](https://github.com/rust-analyzer/rust-analyzer/issues?q=is%3Aopen+is%3Aissue+label%3AE-has-instructions) | 33 | * [E-has-instructions](https://github.com/rust-analyzer/rust-analyzer/issues?q=is%3Aopen+is%3Aissue+label%3AE-has-instructions) |
34 | issues have links to the code in question and tests. | 34 | issues have links to the code in question and tests. |
35 | * [Broken Window](https://github.com/rust-analyzer/rust-analyzer/issues?q=is:issue+is:open+label:%22Broken+Window%22) | ||
36 | are issues which are not critical by themselves, but which should be fixed ASAP regardless, to avoid accumulation of technical debt. | ||
35 | * [E-easy](https://github.com/rust-analyzer/rust-analyzer/issues?q=is%3Aopen+is%3Aissue+label%3AE-easy), | 37 | * [E-easy](https://github.com/rust-analyzer/rust-analyzer/issues?q=is%3Aopen+is%3Aissue+label%3AE-easy), |
36 | [E-medium](https://github.com/rust-analyzer/rust-analyzer/issues?q=is%3Aopen+is%3Aissue+label%3AE-medium), | 38 | [E-medium](https://github.com/rust-analyzer/rust-analyzer/issues?q=is%3Aopen+is%3Aissue+label%3AE-medium), |
37 | [E-hard](https://github.com/rust-analyzer/rust-analyzer/issues?q=is%3Aopen+is%3Aissue+label%3AE-hard), | 39 | [E-hard](https://github.com/rust-analyzer/rust-analyzer/issues?q=is%3Aopen+is%3Aissue+label%3AE-hard), |
@@ -206,20 +208,26 @@ Release process is handled by `release`, `dist` and `promote` xtasks, `release` | |||
206 | 208 | ||
207 | Additionally, it assumes that remote for `rust-analyzer` is called `upstream` (I use `origin` to point to my fork). | 209 | Additionally, it assumes that remote for `rust-analyzer` is called `upstream` (I use `origin` to point to my fork). |
208 | 210 | ||
211 | `release` calls the GitHub API calls to scrape pull request comments and categorize them in the changelog. | ||
212 | This step uses the `curl` and `jq` applications, which need to be available in `PATH`. | ||
213 | Finally, you need to obtain a GitHub personal access token and set the `GITHUB_TOKEN` environment variable. | ||
214 | |||
209 | Release steps: | 215 | Release steps: |
210 | 216 | ||
211 | 1. Inside rust-analyzer, run `cargo xtask release`. This will: | 217 | 1. Set the `GITHUB_TOKEN` environment variable. |
218 | 2. Inside rust-analyzer, run `cargo xtask release`. This will: | ||
212 | * checkout the `release` branch | 219 | * checkout the `release` branch |
213 | * reset it to `upstream/nightly` | 220 | * reset it to `upstream/nightly` |
214 | * push it to `upstream`. This triggers GitHub Actions which: | 221 | * push it to `upstream`. This triggers GitHub Actions which: |
215 | * runs `cargo xtask dist` to package binaries and VS Code extension | 222 | * runs `cargo xtask dist` to package binaries and VS Code extension |
216 | * makes a GitHub release | 223 | * makes a GitHub release |
217 | * pushes VS Code extension to the marketplace | 224 | * pushes VS Code extension to the marketplace |
218 | * create new changelog in `rust-analyzer.github.io` | 225 | * call the GitHub API for PR details |
219 | 2. While the release is in progress, fill in the changelog | 226 | * create a new changelog in `rust-analyzer.github.io` |
220 | 3. Commit & push the changelog | 227 | 3. While the release is in progress, fill in the changelog |
221 | 4. Tweet | 228 | 4. Commit & push the changelog |
222 | 5. Inside `rust-analyzer`, run `cargo xtask promote` -- this will create a PR to rust-lang/rust updating rust-analyzer's submodule. | 229 | 5. Tweet |
230 | 6. Inside `rust-analyzer`, run `cargo xtask promote` -- this will create a PR to rust-lang/rust updating rust-analyzer's submodule. | ||
223 | Self-approve the PR. | 231 | Self-approve the PR. |
224 | 232 | ||
225 | If the GitHub Actions release fails because of a transient problem like a timeout, you can re-run the job from the Actions console. | 233 | If the GitHub Actions release fails because of a transient problem like a timeout, you can re-run the job from the Actions console. |
@@ -227,18 +235,27 @@ If it fails because of something that needs to be fixed, remove the release tag | |||
227 | Make sure to remove the new changelog post created when running `cargo xtask release` a second time. | 235 | Make sure to remove the new changelog post created when running `cargo xtask release` a second time. |
228 | 236 | ||
229 | We release "nightly" every night automatically and promote the latest nightly to "stable" manually, every week. | 237 | We release "nightly" every night automatically and promote the latest nightly to "stable" manually, every week. |
238 | |||
230 | We don't do "patch" releases, unless something truly egregious comes up. | 239 | We don't do "patch" releases, unless something truly egregious comes up. |
240 | To do a patch release, cherry-pick the fix on top of the current `release` branch and push the branch. | ||
241 | There's no need to write a changelog for a patch release, it's OK to include the notes about the fix into the next weekly one. | ||
242 | Note: we tag releases by dates, releasing a patch release on the same day should work (by overwriting a tag), but I am not 100% sure. | ||
231 | 243 | ||
232 | ## Permissions | 244 | ## Permissions |
233 | 245 | ||
234 | There are three sets of people with extra permissions: | 246 | There are three sets of people with extra permissions: |
235 | 247 | ||
236 | * rust-analyzer GitHub organization **admins** (which include current t-compiler leads). | 248 | * rust-analyzer GitHub organization [**admins**](https://github.com/orgs/rust-analyzer/people?query=role:owner) (which include current t-compiler leads). |
237 | Admins have full access to the org. | 249 | Admins have full access to the org. |
238 | * **review** team in the organization. | 250 | * [**review**](https://github.com/orgs/rust-analyzer/teams/review) team in the organization. |
239 | Reviewers have `r+` access to all of organization's repositories and publish rights on crates.io. | 251 | Reviewers have `r+` access to all of organization's repositories and publish rights on crates.io. |
240 | They also have direct commit access, but all changes should via bors queue. | 252 | They also have direct commit access, but all changes should via bors queue. |
241 | It's ok to self-approve if you think you know what you are doing! | 253 | It's ok to self-approve if you think you know what you are doing! |
242 | bors should automatically sync the permissions. | 254 | bors should automatically sync the permissions. |
243 | * **triage** team in the organization. | 255 | Feel free to request a review or assign any PR to a reviewer with the relevant expertise to bring the work to their attention. |
256 | Don't feel pressured to review assigned PRs though. | ||
257 | If you don't feel like reviewing for whatever reason, someone else will pick the review up! | ||
258 | * [**triage**](https://github.com/orgs/rust-analyzer/teams/triage) team in the organization. | ||
244 | This team can label and close issues. | 259 | This team can label and close issues. |
260 | |||
261 | Note that at the time being you need to be a member of the org yourself to view the links. | ||