Below are the steps needed to do a Viceroy release:
- Make sure the Viceroy version has been bumped up to the current release version. You might need to bump the minor version (e.g. 0.2.0 to 0.3.0) if there are any semver breaking changes. Review the changes since the last release just to be sure.
- Update the
Cargo.lock
files by runningmake generate-lockfile
. - Update
CHANGELOG.md
so that it contains all of the updates since the previous version as its own commit. Remove the "## Unreleased" header. - Create a local branch in the form
release-x.y.z
wherex
,y
, andz
are the major, minor, and patch versions of Viceroy and have the tip of the branch contain the Changelog commit. - Run
make ci
locally to make sure that everything will pass before pushing the branch and opening up a PR. - After you get approval, run
git tag vx.y.z HEAD && git push origin --tags
. Pushing this tag will kick off a build for all of the release artifacts. - After CI completes, we should publish each crate in the workspace to the crates.io registry. Note that we must do this in order of dependencies. So,
(cd lib && cargo publish)
(cd cli && cargo publish)
- Now, we should return to our release PR.
- Update the version fields in
lib/Cargo.toml
andcli/Cargo.toml
to the next patch version (soz + 1
). - Update the dependency on
viceroy-lib
incli/Cargo.toml
to the next patch version. - Update all the lockfiles by running
make generate-lockfile
. - Restore the
## Unreleased
header at the top ofCHANGELOG.md
. - Get another approval and do a merge commit (not a squash) when CI passes. We don't squash because we want the tagged commit to be contained within the
main
branch