This document explains the release procedure. It is only relevant for maintainers.
The release announcement lives on the website, and needs to be created in the website repository.
We need to make the release announcement available on the website, without publishing it to the blog or RSS feed at first:
- Create release announcement file:
cargo run -- create-release-announcement
- Copy previous release announcement into new file.
- Update
title
key in the Markdown front matter. - Remove the
date
key. - Update the
extra.version
key.
Use the previously prepared file and create the release announcement:
- Remove any content left form the previous announcement, leave structure.
- Go through all pull requests, add them to the draft.
- Get list of pull requests by executing this command in website repository:
cargo run -- print-pull-requests 2022-08-01
(replace date with date of previous release) - Thank all contributors
- new contributors: "special thanks go to first-time contributor
@name
!" - other contributors: "thank you,
@name
!"
- new contributors: "special thanks go to first-time contributor
- Make notes for introduction
- Get list of pull requests by executing this command in website repository:
- Write introduction
- Ideally, you already have a list of notes from adding the pull requests.
- Highlight contributions.
- Update list of sponsors
- https://github.com/sponsors/hannobraun/dashboard/activity
- Mention all sponsors at $32 / month and above by name.
- Write Issue of the Week See notes below.
- Write Outlook
When done, deploy to the website.
Potential new issues of the week:
- hannobraun#13
- hannobraun#15
- hannobraun#794
- hannobraun#804
- hannobraun#805
- hannobraun#847
- hannobraun#848
Already mentioned issues of the week (remove, once closed):
- 2022-08-08: hannobraun#20
- 2022-08-01: hannobraun#883
- 2022-07-25: hannobraun#856
- 2022-07-18: hannobraun#815
- 2022-07-11: hannobraun#793
- 2022-07-04: hannobraun#479
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"
In the release branch, update the version numbers in the Cargo.toml
files of all crates in the crates/
directory to the new version. Also update the version numbers of the dependencies between the crates.
Commit these changes: git commit -m "Update version"
Push the release branch, create a pull request, and label it as release
. Once the CI build completed successfully, merge the pull-request and mention the new version in the commit, e.g. Release v0.1.2
.
The release-operator will run in the scope of GitHub Actions' CD workflow. It will yield a set of compiled binaries, their checksums and a new GitHub Release with all artifacts attached.
It will also cargo publish
all crates 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 channels:
- Mailing list
- Matrix channel
Post it in the following channels:
- Reddit
- https://www.reddit.com/r/rust/
- Use previous post as template
- Make sure title describes how it relates to Rust
- Add comment with short explanation, offer to answer questions
- https://www.reddit.com/r/rust/
- 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.