Our release process is as follows:
- In a new branch
release/vX.Y.Z
, update the changelog to reflect and summarize all changes in the release. This involves:- Running
unclog build -u
and copy pasting the output at the top of theCHANGELOG.md
file, making sure to update the header with the new version. - Running
unclog release --editor <editor> vX.Y.Z
to create a summary of all of the changes in this release.- Your text editor will open. Write the release summary, and close the editor. Make sure to include a comment on whether or not the release contains consensus-breaking changes.
- Add this same summary to
CHANGELOG.md
as well.
- Committing the updated
CHANGELOG.md
file and.changelog
directory to the repo.
- Running
- Push this to a branch
release/vX.Y.Z
according to the version number of the anticipated release (e.g.release/v0.18.0
) and open a draft PR. - If there were changes in the
ibc-derive
crate, we need to publish a new version of that crate.- bump the version in
crates/ibc-derive/Cargo.toml
- Publish
ibc-derive
withcargo publish -p ibc-derive
- bump the version in
- Bump the versions of all crates to the new version in their Cargo.toml and in
the root
Cargo.toml
as well, and push these changes to the release PR.- If you released a new version of
ibc-derive
in step 3, make sure to update that dependency.
- If you released a new version of
- Run
cargo doc -p ibc --all-features --open
locally to double-check that all the documentation compiles and seems up-to-date and coherent. Fix any potential issues here and push them to the release PR. - Mark the PR as Ready for Review and incorporate feedback on the release. Once approved, merge the PR.
- Checkout the
main
and pull it withgit checkout main && git pull origin main
. - Create a signed tag
git tag -s -a vX.Y.Z
. In the tag message, write the version and the link to the corresponding section of the changelog. Then push the tag to GitHub withgit push origin vX.Y.Z
.- The release workflow will run the
cargo release --execute
command in a CI worker.
- The release workflow will run the
- If some crates have not been released, check the cause of the failure and
act accordingly:
- In case of intermittent problems with the registry, try
cargo release
locally to publish any missing crates from this release. This step requires the appropriate privileges to push crates to crates.io. - In case the problems arise from the source files, fix them, bump a new
patch version (e.g.
v0.48.1
) and repeat the process with its corresponding new tag.
- In case of intermittent problems with the registry, try
- Once the tag is pushed, wait for the CI bot to create a GitHub release,
then update the release description and append:
[📖CHANGELOG](https://github.com/cosmos/ibc-rs/blob/main/CHANGELOG.md#vXYZ)
All done! 🎉