-
Notifications
You must be signed in to change notification settings - Fork 22
Release Management
madoar edited this page Jun 14, 2020
·
4 revisions
We use semantic versioning for our releases. This is represented by the dotted version numbers: #major.#minor.#maintenance
.
The git repository is laid out like this:
- branches:
- master - All development happens here. Pull-requests should be made against master
- x.y - Maintenance branches for tracking bugfixes
- your_feature_branch - topic branches for features that are under development
- tags:
- releases/x.y.z - Tags representing each release.
- Create a tag named
releases/x.y.z
wherex.y.z
is the version number being released. - GitHub Actions will trigger based upon the tag name and create the release.
- Edit the generated release document to include the changelogs, release notes, etc.
- If this is a ".0" release, create a maintenance branch. (e.g. If we're releasing 1.0.0 or 1.2.0, create a branch named
1.0
or1.2
, respectively.
Maintenance releases require some extra steps because we need to ensure that changes we ship with the maintenance release are also included with the main development branch. With Git, there are two ways to do it that are roughly equivalent - merging or cherry-picking.
- PRs with bugfixes are created against the maintenance branch and merged.
- A new tag
releases/x.y.z
is created against the maintenance branch,x.y
, triggering GitHub Actions to create the release. - Edit the release document to include the changelogs, release notes, etc.
- Merge the maintenance branch into master.
- PRs with bugfixes are created against master, as normal.
- Commits merged into master are then cherry-picked into the maintenance branch.
- A new tag
releases/x.y.z
is created against the maintenance branch,x.y
, triggering GitHub Actions to create the release. - Edit the release document to include the changelogs, release notes, etc.