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 announcement
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:
- Add pull requests A list of pull requests has been added to the draft automatically. Go through them, update and merge entries as appropriate, sort them into the correct categories.
- Write introduction
- Summarize the week's development.
- Highlight contributions.
- Choose title and 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. Anything that updates this pull request (like comments), could confuse next week's release automation (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 compile binaries, 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:
- Twitter https://twitter.com/hannobraun
- Mastodon https://fosstodon.org/@hannobraun
- Rust Users https://users.rust-lang.org/t/fornjot-code-cad-in-rust-weekly-dev-log/71783
- This Week in Rust https://github.com/rust-lang/this-week-in-rust
You are done. Figure out what didn't go optimally, and update this release procedure accordingly.