This document lists the steps that lead to a successful release of Topgrade.
-
Open a PR that:
Here is an Example PR that you can refer to.
-
bumps the version number.
If there are breaking changes, the major version number should be increased.
-
If the major versioin number gets bumped, update SECURITY.md.
-
Overwrite
BREAKINGCHANGES
withBREAKINGCHANGES_dev
, and create a new dev file:$ cd topgrade $ mv BREAKINGCHANGES_dev.md BREAKINGCHANGES.md $ touch BREAKINGCHANGES_dev.md
-
-
Check and merge that PR.
-
Go to the release page and click the Draft a new release button
-
Write the release notes
We usually use GitHub's Automatically generated release notes functionality to generate release notes, but you write your own one instead.
-
Attaching binaries
You don't need to do this as our CI will automatically do it for you, binaries for Linux, macOS and Windows will be created and attached.
And the CI will publish the new binary to:
- AUR
- PyPi
- Homebrew (seems that this is not working correctly)
- Winget
-
Manually release it to Crates.io
Yeah, this is unfortunate, our CI won't do this for us. We should probably add one.
cd
to the Topgrade directory, make sure that it is the latest version (i.e., including the PR that bumps the version number).- Set up your token with
cargo login
. - Dry-run the publish
cargo publish --dry-run
. - If step 3 works, then do the final release
cargo publish
.
You can also take a look at the official tutorial Publishing on crates.io