From 2b3c8fdc5d8abac9d0cb53a189a008c701300b96 Mon Sep 17 00:00:00 2001 From: James Wilson Date: Wed, 2 Feb 2022 10:44:46 +0000 Subject: [PATCH] Add release checklist (#418) * Add release checklist * Subxt, not Soketto * more Soketto -> Subxt fixes * Signed tags and note about incrementing version of each crate Co-authored-by: David Co-authored-by: Niklas Adolfsson * Add command to publish crates in required order * undo test breakages and codegen first since macro depends on it * Update RELEASING.md Co-authored-by: Andrew Jones * sleep 10, and text niggles Co-authored-by: David Co-authored-by: Niklas Adolfsson Co-authored-by: Andrew Jones --- RELEASING.md | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 RELEASING.md diff --git a/RELEASING.md b/RELEASING.md new file mode 100644 index 0000000000..ffc325eb1e --- /dev/null +++ b/RELEASING.md @@ -0,0 +1,76 @@ +# Release Checklist + +These steps assume that you've checked out the Subxt repository and are in the root directory of it. + +We also assume that ongoing work done is being merged directly to the `master` branch. + +1. Ensure that everything you'd like to see released is on the `master` branch. + +2. Create a release branch off `master`, for example `release-v0.17.0`. Decide how far the version needs to be bumped based + on the changes to date. If unsure what to bump the version to (e.g. is it a major, minor or patch release), check with the + Parity Tools team. + +3. Check that you're happy with the current documentation. + + ``` + cargo doc --open --all-features + ``` + + CI checks for broken internal links at the moment. Optionally you can also confirm that any external links + are still valid like so: + + ``` + cargo install cargo-deadlinks + cargo deadlinks --check-http -- --all-features + ``` + + If there are minor issues with the documentation, they can be fixed in the release branch. + +4. Bump the crate version in `Cargo.toml` to whatever was decided in step 2 for `subxt-codegen`, `subxt-macro`, `subxt` and `subxt-cli`. + +5. Update `CHANGELOG.md` to reflect the difference between this release and the last. If you're unsure of + what to add, check with the Tools team. See the `CHANGELOG.md` file for details of the format it follows. + + Any [closed PRs](https://github.com/paritytech/subxt/pulls?q=is%3Apr+is%3Aclosed) between the last release and + this release branch should be noted. + +6. Commit any of the above changes to the release branch and open a PR in GitHub with a base of `master`. + +7. Once the branch has been reviewed and passes CI, merge it. + +8. Now, we're ready to publish the release to crates.io. + + Checkout `master`, ensuring we're looking at that latest merge (`git pull`). + + The crates in this repository need publishing in a specific order, since they depend on each other. + Additionally, `subxt-macro` has a circular dev dependency on `subxt`, so we use `cargo hack` to remove + dev dependencies (and `--allow-dirty` to ignore the git changes as a result) to publish it. + + So, first install `cargo hack` with `cargo install cargo hack`. Next, you can run something like the following + command to publish each crate in the required order (allowing a little time inbetween each to let `crates.io` catch up) + with what we've published). + + ``` + (cd codegen && cargo publish) && \ + sleep 10 && \ + (cd macro && cargo hack publish --no-dev-deps --allow-dirty) && \ + sleep 10 && \ + cargo publish && \ + sleep 10 && \ + (cd cli && cargo publish); + ``` + + If you run into any issues regarding crates not being able to find suitable versions of other `subxt-*` crates, + you may just need to wait a little longer and then run the remaining portion of that command. + +9. If the release was successful, tag the commit that we released in the `master` branch with the + version that we just released, for example: + + ``` + git tag -s v0.17.0 # use the version number you've just published to crates.io, not this one + git push --tags + ``` + + Once this is pushed, go along to [the releases page on GitHub](https://github.com/paritytech/subxt/releases) + and draft a new release which points to the tag you just pushed to `master` above. Copy the changelog comments + for the current release into the release description. \ No newline at end of file