Skip to content

Commit

Permalink
Release v0.53.0 (#1224)
Browse files Browse the repository at this point in the history
* exclude ibc-primitives

* format release md

* add context for rate-limit

* fix cargo release dry run check

* update on release md
  • Loading branch information
rnbguy authored May 14, 2024
1 parent 97165b1 commit 86a0ee0
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 25 deletions.
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

0 comments on commit 86a0ee0

Please sign in to comment.