@@ -235,3 +235,34 @@ For measuring time of incremental analysis, use either of these:
235235$ cargo run --release -p rust-analyzer -- analysis-bench ../chalk/ --highlight ../chalk/chalk-engine/src/logic.rs
236236$ cargo run --release -p rust-analyzer -- analysis-bench ../chalk/ --complete ../chalk/chalk-engine/src/logic.rs:94:0
237237```
238+
239+ # Release Process
240+
241+ Release process is handled by ` release ` , ` dist ` and ` promote ` xtasks, ` release ` being the main one.
242+
243+ ` release ` assumes that you have checkouts of ` rust-analyzer ` , ` rust-ananalyzer.github.io ` , and ` rust-lang/rust ` in the same directory:
244+
245+ ```
246+ ./rust-analyzer
247+ ./rust-analyzer.github.io
248+ ./rust-rust-analyzer # Note the name!
249+ ```
250+
251+ Additionally, it assumes that remote for ` rust-analyzer ` is called ` upstream ` (I use ` origin ` to point to my fork).
252+
253+ Release steps:
254+
255+ 1 . Inside rust-analyzer, run ` cargo xtask release ` . This will:
256+ * checkout the ` release ` branch
257+ * reset it to ` upstream/nightly `
258+ * push it to ` upstream ` . This triggers GitHub Actions which:
259+ ** runs ` cargo xtask dist ` to package binaries and VS Code extension
260+ ** makes a GitHub release
261+ ** pushes VS Code extension to the marketplace
262+ * create new changelog in ` rust-analyzer.github.io `
263+ * create ` rust-analyzer.github.io/git.log ` file with the log of merge commits since last release
264+ 2 . While the release is in progress, fill-in the changelog using ` git.log `
265+ 3 . Commit & push the changelog
266+ 4 . Tweet
267+ 5 . Inside ` rust-analyzer ` , run ` cargo xtask promote ` -- this will create a PR to rust-lang/rust updating rust-analyzer's submodule.
268+ Self-approve the PR.
0 commit comments