status-go/RELEASING.md

56 lines
2.4 KiB
Markdown
Raw Normal View History

# Release Process of status-go
The release process describes creating a release on Github. Each release consists of a new tag and assets which are builds for various environments but not only.
The process is automated and, even though it's possible to run manually, should always be triggered using [our Jenkins job](https://ci.status.im/job/status-go/job/parallel/).
## Versioning
We use [semver](https://semver.org/) but as we do not have a stable version yet, it's a bit skewed.
We use `0` as the MAJOR version and bump only MINOR when there are breaking changes and PATCH when there are no breaking changes.
Additionally, a pre-release can be created and the version can look like as complicated as this:
```
0.MINOR.PATCH-beta.INDEX.GIT_SHA
```
## Releasing from a branch
TODO: create a script that can do that instead of manual work.
1. Make sure that your branch is rebased on `develop`,
1. Change `VERSION` file content to `0.X.Y-beta.Z.$GIT_SHA` where `GIT_SHA` is the commit you want to release,
1. Go to [Jenkins job](https://ci.status.im/job/status-go/job/parallel/) and use your branch. NOTE: do **not** select "RELEASE".
**NOTE**: remember to change `VERSION` content back before merge.
## Releasing pre-release from develop
TODO: create a script that can do that instead of manual work.
1. Pull `develop` branch,
1. Bump `Z` (`0.X.Y-beta.Z`) in the current version (`VERSION` file),
1. Commit and push the change,
1. Go to [Jenkins job](https://ci.status.im/job/status-go/job/parallel/) and use develop branch. NOTE: do not select "RELEASE".
## Releasing from develop (regular release)
TODO: create a script that can do that instead of manual work.
1. Pull `develop` branch,
1. Checkout a new branch `release/0.X`,
1. Remove `-beta.Z` suffix from the current version (`VERSION` file),
1. Commit and push the change,
1. Checkout develop branch, bump `X`, reset `Z` to `0` and commit to develop,
1. Go to [Jenkins job](https://ci.status.im/job/status-go/job/parallel/), select "RELEASE" and use `release/0.X` branch.
## Releasing from develop (a hot-fix)
TODO: create a script that can do that instead of manual work.
1. Checkout a release branch you want to hot fix (branch have a name `release/0.X`),
1. Bump `Y` (`0.X.Y`) in the current version (`VERSION` file),
1. Commit and push the change to `release/0.X` branch,
1. Go to [Jenkins job](https://ci.status.im/job/status-go/job/parallel/), select "RELEASE" and use `release/0.X` branch name.