<commit_before># 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.<commit_msg>Fix "Releasing pre-release from develop"<commit_after># 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/), select "RELEASE" and use `develop` branch.

## 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.
{'fraction_non_alphanumeric': 0.11261440509351373, 'fraction_numerical': 0.011142061281337047, 'mean_word_length': 4.006972111553785, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 12, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1717103', 'n_tokens_mistral': 1572, 'n_tokens_neox': 1521, 'n_words': 714}