Skip to content

Commit 86a0ee0

Browse files
authored
Release v0.53.0 (#1224)
* exclude ibc-primitives * format release md * add context for rate-limit * fix cargo release dry run check * update on release md
1 parent 97165b1 commit 86a0ee0

File tree

2 files changed

+50
-25
lines changed

2 files changed

+50
-25
lines changed

Makefile

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,16 @@ test: ## Run tests with all features and without default features.
3737
cargo test --all-targets --no-default-features
3838

3939
check-release: ## Check that the release build compiles.
40-
cargo release --workspace --no-push --no-tag --no-publish --exclude ibc-derive --exclude ibc-client-tendermint-cw
40+
cargo release --workspace --no-push --no-tag \
41+
--exclude ibc-derive \
42+
--exclude ibc-primitives \
43+
--exclude ibc-client-tendermint-cw
4144

4245
release: ## Perform an actual release and publishes to crates.io.
43-
cargo release --workspace --no-push --no-tag --exclude ibc-derive --exclude ibc-client-tendermint-cw --allow-branch HEAD --execute
46+
cargo release --workspace --no-push --no-tag --allow-branch HEAD --execute \
47+
--exclude ibc-derive \
48+
--exclude ibc-primitives \
49+
--exclude ibc-client-tendermint-cw
4450

4551
build-tendermint-cw: ## Build the WASM file for the ICS-07 Tendermint light client.
4652
@echo "Building the WASM file for the ICS-07 Tendermint light client"

RELEASES.md

Lines changed: 42 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Our release process is as follows:
2424
4. Bump the versions of all crates to the new version in their Cargo.toml and in
2525
the root `Cargo.toml` as well, and push these changes to the release PR.
2626
- If you released a new version of `ibc-derive` in step 3, make sure to
27-
update that dependency.
27+
update that dependency.
2828
- Verify that there is no dev-dependency among the workspace crates. This is
2929
important, as `cargo-release` ignores dev-dependency edges. You may use
3030
`cargo-depgraph`:
@@ -38,41 +38,60 @@ Our release process is as follows:
3838
because of release order complicacy (except maybe inside `ibc-testkit`, as
3939
it is the top crate that depends on `ibc` crate and no other crate depends
4040
on it).
41-
- In order to resolve such a situation, the dev dependencies other than `ibc-testkit`
42-
can be manually released to crates.io first so that the subsequent crates that
43-
depend on them can then be released via the release process. For instructions
44-
on how to release a crate on crates.io, refer [here](https://doc.rust-lang.org/cargo/reference/publishing.html).
45-
5. Run `cargo doc -p ibc --all-features --open` locally to double-check that all
41+
- In order to resolve such a situation, the dev dependencies other than
42+
`ibc-testkit` can be manually released to crates.io first so that the
43+
subsequent crates that depend on them can then be released via the release
44+
process. For instructions on how to release a crate on crates.io, refer
45+
[here](https://doc.rust-lang.org/cargo/reference/publishing.html).
46+
5. Beware of [crates-io rate limit][cargo-release-rate-limit]. It is 5 for
47+
publishing new crates and 30 for publishing existing crates. But the number
48+
of our crates has reached 31. So we publish a leaf crate, `ibc-primitives`
49+
manually and release the rest of the 30 crates via CI.
50+
- Release `ibc-primitives` by running:
51+
```sh
52+
cargo release -p ibc-primitives --no-push --no-tag --allow-branch main --execute
53+
```
54+
- Validate the number of crates that need to be released via CI, it can not
55+
be more than 30.
56+
- There should be a 10 minutes delay between the release of `ibc-primitives`
57+
and the release of the rest of the crates on CI.
58+
- If new crates are added, we need to recompute the set of crates that we
59+
want to release via CI. The rest must be released manually.
60+
6. Run `cargo doc -p ibc --all-features --open` locally to double-check that all
4661
the documentation compiles and seems up-to-date and coherent. Fix any
4762
potential issues here and push them to the release PR.
48-
6. Mark the PR as **Ready for Review** and incorporate feedback on the release.
63+
7. Mark the PR as **Ready for Review** and incorporate feedback on the release.
4964
Once approved, merge the PR.
50-
7. Checkout the `main` and pull it with `git checkout main && git pull origin main`.
51-
8. Create a signed tag `git tag -s -a vX.Y.Z`. In the tag message, write the
65+
8. Checkout the `main` and pull it with
66+
`git checkout main && git pull origin main`.
67+
9. Create a signed tag `git tag -s -a vX.Y.Z`. In the tag message, write the
5268
version and the link to the corresponding section of the changelog. Then push
5369
the tag to GitHub with `git push origin vX.Y.Z`.
5470
- The [release workflow][release.yaml] will run the `cargo release --execute`
55-
command in a CI worker.
56-
9. If some crates have not been released, check the cause of the failure and
57-
act accordingly:
71+
command in a CI worker.
72+
10. If some crates have not been released, check the cause of the failure and
73+
act accordingly:
5874
1. In case of intermittent problems with the registry, try `cargo release`
59-
locally to publish any missing crates from this release. This step
60-
requires the appropriate privileges to push crates to [crates.io].
75+
locally to publish any missing crates from this release. This step
76+
requires the appropriate privileges to push crates to [crates.io].
6177
2. If there is any new crate published locally, add
62-
[ibcbot](https://crates.io/users/ibcbot) to its owners list.
63-
3. In case problems arise from the source files, fix them, bump a new
64-
patch version (e.g. `v0.48.1`) and repeat the process with its
65-
corresponding new tag.
66-
10. Once the tag is pushed, wait for the CI bot to create a GitHub release,
67-
then update the release description and append:
68-
`[📖CHANGELOG](https://github.com/cosmos/ibc-rs/blob/main/CHANGELOG.md#vXYZ)`
78+
[ibcbot](https://crates.io/users/ibcbot) to its owners list.
79+
3. In case problems arise from the source files, fix them, bump a new patch
80+
version (e.g. `v0.48.1`) and repeat the process with its corresponding
81+
new tag.
82+
11. Once the tag is pushed, wait for the CI bot to create a GitHub release, then
83+
update the release description and append:
84+
`[📖CHANGELOG](https://github.com/cosmos/ibc-rs/blob/main/CHANGELOG.md#vXYZ)`
6985

7086
### Communications (non-technical) release pipeline
7187

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

7593
All done! 🎉
7694

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

0 commit comments

Comments
 (0)