Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v0.53.0 #1224

Merged
merged 5 commits into from
May 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,16 @@ test: ## Run tests with all features and without default features.
cargo test --all-targets --no-default-features

check-release: ## Check that the release build compiles.
cargo release --workspace --no-push --no-tag --no-publish --exclude ibc-derive --exclude ibc-client-tendermint-cw
cargo release --workspace --no-push --no-tag \
--exclude ibc-derive \
--exclude ibc-primitives \
--exclude ibc-client-tendermint-cw

release: ## Perform an actual release and publishes to crates.io.
cargo release --workspace --no-push --no-tag --exclude ibc-derive --exclude ibc-client-tendermint-cw --allow-branch HEAD --execute
cargo release --workspace --no-push --no-tag --allow-branch HEAD --execute \
--exclude ibc-derive \
--exclude ibc-primitives \
--exclude ibc-client-tendermint-cw

build-tendermint-cw: ## Build the WASM file for the ICS-07 Tendermint light client.
@echo "Building the WASM file for the ICS-07 Tendermint light client"
Expand Down
65 changes: 42 additions & 23 deletions RELEASES.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Our release process is as follows:
4. 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.
update that dependency.
- Verify that there is no dev-dependency among the workspace crates. This is
important, as `cargo-release` ignores dev-dependency edges. You may use
`cargo-depgraph`:
Expand All @@ -38,41 +38,60 @@ Our release process is as follows:
because of release order complicacy (except maybe inside `ibc-testkit`, as
it is the top crate that depends on `ibc` crate and no other crate depends
on it).
- In order to resolve such a situation, the dev dependencies other than `ibc-testkit`
can be manually released to crates.io first so that the subsequent crates that
depend on them can then be released via the release process. For instructions
on how to release a crate on crates.io, refer [here](https://doc.rust-lang.org/cargo/reference/publishing.html).
5. Run `cargo doc -p ibc --all-features --open` locally to double-check that all
- In order to resolve such a situation, the dev dependencies other than
`ibc-testkit` can be manually released to crates.io first so that the
subsequent crates that depend on them can then be released via the release
process. For instructions on how to release a crate on crates.io, refer
[here](https://doc.rust-lang.org/cargo/reference/publishing.html).
5. Beware of [crates-io rate limit][cargo-release-rate-limit]. It is 5 for
publishing new crates and 30 for publishing existing crates. But the number
of our crates has reached 31. So we publish a leaf crate, `ibc-primitives`
manually and release the rest of the 30 crates via CI.
- Release `ibc-primitives` by running:
```sh
cargo release -p ibc-primitives --no-push --no-tag --allow-branch main --execute
```
- Validate the number of crates that need to be released via CI, it can not
be more than 30.
- There should be a 10 minutes delay between the release of `ibc-primitives`
and the release of the rest of the crates on CI.
- If new crates are added, we need to recompute the set of crates that we
want to release via CI. The rest must be released manually.
6. 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.
6. Mark the PR as **Ready for Review** and incorporate feedback on the release.
7. Mark the PR as **Ready for Review** and incorporate feedback on the release.
Once approved, merge the PR.
7. Checkout the `main` and pull it with `git checkout main && git pull origin main`.
8. Create a signed tag `git tag -s -a vX.Y.Z`. In the tag message, write the
8. Checkout the `main` and pull it with
`git checkout main && git pull origin main`.
9. 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 with `git push origin vX.Y.Z`.
- The [release workflow][release.yaml] will run the `cargo release --execute`
command in a CI worker.
9. If some crates have not been released, check the cause of the failure and
act accordingly:
command in a CI worker.
10. If some crates have not been released, check the cause of the failure and
act accordingly:
1. 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].
locally to publish any missing crates from this release. This step
requires the appropriate privileges to push crates to [crates.io].
2. If there is any new crate published locally, add
[ibcbot](https://crates.io/users/ibcbot) to its owners list.
3. In case 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.
10. 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)`
[ibcbot](https://crates.io/users/ibcbot) to its owners list.
3. In case 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.
11. 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)`

### Communications (non-technical) release pipeline

- Notify the communications team about the pending release and prepare an announcement.
- Coordinate with other organizations that are active in IBC development (e.g., Interchain) and keep them in the loop.
- Notify the communications team about the pending release and prepare an
announcement.
- Coordinate with other organizations that are active in IBC development (e.g.,
Interchain) and keep them in the loop.

All done! 🎉

[crates.io]: https://crates.io
[release.yaml]: https://github.com/cosmos/ibc-rs/blob/main/.github/workflows/release.yaml
[cargo-release-rate-limit]: https://github.com/crate-ci/cargo-release/blob/4b09269/src/steps/mod.rs#L214-L268
Loading