This document explains the release procedure. It is only relevant for maintainers.
We have a CLI tool to automate parts of the release process. Make sure you have the latest version of that installed.
In the Fornjot repository, run:
cargo install --path tools/automator
The release announcement lives on the website, and needs to be created in the website repository.
First, create the initial draft of the release announcement:
automator blog release
This will create an announcement that will initially not be published to the blog or RSS feed, but it will be available at its final URL.
Now, edit this file to finish the release announcement:
- Curate pull requests
- A list of pull requests has been added to the draft automatically.
- Update and merge entries as appropriate, sort them into the categories.
- Write introduction
- Summarize changes since last release.
- Highlight contributions.
- Choose subtitle.
When done, deploy to the website.
In the main Fornjot repository, do this:
git switch -c release
Add a changelog entry for the new version. Copy the summary of pull requests from the release announcements and add it to the changelog.
Commit these changes: git commit -m "Update changelog"
Update all version
keys in the top-level Cargo.toml
.
Commit these changes: git commit -m "Update version"
Push the release branch:
git push -u origin release
Create a pull request:
- Mention the version in the title (e.g.
Release v0.1.2
). - Label it as
release
. - Lock the pull request.
The pull request needs to be locked, as anything that updates it (like comments), could confuse the automation for the next release (because GitHub doesn't allow sorting pull requests by merge date, unfortunately).
Once the CI build completed successfully, merge the pull request. The release automation will now create a release on GitHub, and publish to crates.io.
The GitHub Release has been created by automation in the previous step. Copy the Markdown source from the release announcement into the GitHub release. Update as necessary.
Add note up top, linking to the release announcement on the website.
To publish the release on the website properly, add a date
key to the front matter. Now the announcement should show up on the blog page and the Atom/RSS feed.
Deploy the announcement to the website.
Post the release announcement in the official Fornjot community channels:
- Mailing list
- Matrix channel
Additionally, post it in the following places:
- Rust Users https://users.rust-lang.org/
- Mastodon https://fosstodon.org/@hannobraun
- Twitter https://twitter.com/hannobraun
- This Week in Rust https://github.com/rust-lang/this-week-in-rust
- Reddit https://www.reddit.com/r/rust/
You are done. Figure out what didn't go optimally, and update this release procedure accordingly.