This document explains the release procedure. It is only relevant for maintainers.
git switch -c release
Add a changelog entry for the new version. Use the entry for the previous version as a template. Remember to thank the contributors.
The list of pull request since the last release is available here: https://github.com/hannobraun/Fornjot/pulls?q=is%3Apr+merged%3A%3E2022-01-25+sort%3Acreated-asc
Replace the date near the end of that URL with the day before the previous release.
Commit these changes: git commit -m "Update changelog"
Use the previous release announcement as a template, but make the following changes:
- Place the directory in the
static/blog/
instead ofcontent/blog/
. - Move the
index.md
file tocontent/release.md
. - Remove the
date
key from the Markdown front matter. - Add a
path
key to explicitly specify the path.
The path should be identical to where the page would be, if it were added to content/blog/
. This will result in the page being and all static assets being available at their final URLs, without the page being listed on the blog page, or being picked up by the Atom/RSS feed.
Deploy the release announcement in this form to the website.
In the release branch, update the version numbers in the Cargo.toml
files of all crates to the new version. Also update the version numbers of the dependencies between the crates.
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 release announcement from the website (in HTML form), using the following procedure:
- Take contents of
<main>
- Replace
href="/
withhref="https://www.fornjot.app/
. - Replace
src="/
withsrc="https://www.fornjot.app/
. - Added note up top, linking to the release announcement on the website.
To publish the release on the website properly, do the following:
- Move the directory with the static assets to
content/blog/
. - Move
content/release.md
to the directory with the other assets, asindex.md
. - Add the
date
key to the front matter. - Remove the
path
key.
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:
- Matrix channel
- Mailing list
Post it on the following sites:
- /r/rust: https://www.reddit.com/r/rust/
- Rust Users: https://users.rust-lang.org/
- This Week in Rust: https://github.com/rust-lang/this-week-in-rust
Use the previous release announcement posted there as a template.
You are done. Figure out what didn't go optimally, and update this release procedure accordingly.