status-go/RELEASING.md

41 lines
2.1 KiB
Markdown

# 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/manual/).
## 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.
## Custom build
1. Go to [Jenkins job](https://ci.status.im/job/status-go/job/manual/),
1. Leave "RELEASE" **unchecked** and use your branch name.
After successful build, open it (https://ci.status.im/job/status-go/job/manual/$BUILD_ID/) in a browser. Artifacts will have a random ID, for example `status-go-android-181221-143603-5708af.aar`, means that `181221-143603-5708af` is a version you can use in [status-mobile](https://github.com/status-im/status-mobile).
## Releasing a new patch (no breaking changes or a hot-fix release)
TODO: create a script that can do that instead of manual work.
1. Checkout a release branch you want to release from (release branches have names like `release/0.X`),
1. Cherry-pick a commit you want to include OR merge `develop` branch,
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/manual/), select "RELEASE" and use `release/0.X` branch name.
## Releasing a new version (breaking changes)
TODO: create a script that can do that instead of manual work.
1. Merge your PR to `develop` branch,
1. Pull `develop` branch locally,
1. Bump `X`, reset `Z` to `0` and commit to `develop` with a message "Bump version to 0.X.Y",
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. Go to [Jenkins job](https://ci.status.im/job/status-go/job/manual/), select "RELEASE" and use `release/0.X` branch.