Skip to content

Commit

Permalink
Revise Point Release Process (#6333)
Browse files Browse the repository at this point in the history
* Update point release process

* Update CONTRIBUTING.md

Co-authored-by: Alessio Treglia <alessio@tendermint.com>

Co-authored-by: Alessio Treglia <alessio@tendermint.com>
  • Loading branch information
alexanderbez and Alessio Treglia authored Jun 3, 2020
1 parent 8d12c94 commit d17f577
Showing 1 changed file with 35 additions and 17 deletions.
52 changes: 35 additions & 17 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,15 @@
- [Updating Documentation](#updating-documentation)
- [Forking](#forking)
- [Dependencies](#dependencies)
- [Protobuf](#protobuf)
- [Testing](#testing)
- [Branching Model and Release](#branching-model-and-release)
- [PR Targeting](#pr-targeting)
- [Development Procedure](#development-procedure)
- [Pull Merge Procedure](#pull-merge-procedure)
- [Release Procedure](#release-procedure)
- [Point Release Procedure](#point-release-procedure)
- [Code Owner Membership](#code-owner-membership)

Thank you for considering making contributions to Cosmos-SDK and related
repositories!
Expand Down Expand Up @@ -228,23 +230,39 @@ only pull requests targeted directly against master.
### Point Release Procedure
At the moment, only a single major release will be supported, so all point
releases will be based off of that release.
- start on `vX.XX.X`
- checkout a new branch `rcN/vX.X.X`
- cherry pick the desired changes from `master`
- these changes should be small and NON-BREAKING (both API and state machine)
- create a `RELEASE_CHANGELOG.md`, add entires.
- this is needed so the bot knows which entries to add to the release page on github.
- checkout a new branch `release/vX.X.X` based off of the previous release
- create a PR merging `rcN/vX.X.X` into `release/vX.X.X`
- run tests and simulations (noted in [Release Procedure](#release-procedure))
- after tests and simulation have successfully completed, merge the `RC` branch into `release/vX.X.X`
- Make sure to delete the `RC` branch
- create a PR into `master` containing ONLY CHANGELOG.md updates
- Do not push `RELEASE_CHANGELOG.md` to master
- tag (use `git tag -a`) then push the tags (`git push --tags`)
At the moment, only a single major release will be supported, so all point releases will be based
off of that release.
In order to alleviate the burden for a single person to have to cherry-pick and handle merge conflicts
of all desired backporting PRs to a point release, we instead maintain a living backport branch, where
all desired features and bug fixes are merged into as separate PRs.
Example:
Current release is `v0.38.4`. We then maintain a (living) branch `backport/release/v0.38.x`. As PRs
are merged into master, if they wish to be backported into the next `v0.38.x` point release, the
author must:
1. Add `backport` label
2. Pull latest changes on the desired `backport/release/v*.*.x` branch
3. Create a 2nd PR merging the respective backport PR into `backport/release/v*.*.x`
This means it is the authors responsibility to fix any merge conflicts, update changelog entries, and
ensure CI passes. If a PR originates from an external contributor, it may be a team members responsibility
to perform this process instead of the original author.
Finally, when a point release is ready to be made:
1. Create `release/v*.*.x` branch
2. Ensure changelog entries are verified
2. Be sure changelog entries are added to `RELEASE_CHANGELOG.md`
3. Add release version date to the changelog
4. Push release branch along with the annotated tag: **git tag -a**
5. Create a PR into `master` containing ONLY `CHANGELOG.md` updates
1. Do not push `RELEASE_CHANGELOG.md` to `master`
Note, although we aim to support only a single release at a time, the process stated above could be
used for multiple previous versions.
## Code Owner Membership
Expand Down

0 comments on commit d17f577

Please sign in to comment.