-
Notifications
You must be signed in to change notification settings - Fork 91
docs(release): add release process guide for internal contributors #19543
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
jrainville
wants to merge
3
commits into
master
Choose a base branch
from
docs/release-process-guide
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+80
−0
Open
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| # Internal Guides | ||
|
|
||
| This section is meant for internal contributors. Not because they are private, just because external contributors don't need to follow those guidelines. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,69 @@ | ||
| # Release Process Guide | ||
|
|
||
| This guide is meant to explain the flow and rules of the release process, ie the period when we cut a release branch off the master branch in prevision of releasing it to users. Release Candidates (RC) are provided to test the Release. | ||
|
|
||
| 1. A release branch **must** be created at the start of the Release Process for the [Status App](https://github.com/status-im/status-app)'s master branch and [status-go](https://github.com/status-im/status-go)'s develop branch | ||
| 1. The format for the status-app branch is `release/MAJOR.MINOR.x`, eg. `release/2.36.x` | ||
| 2. The format for the status-go branch is automatically done using the Release script. Ask a status-go maintainer to create it. | ||
| 3. The status-app release branch **must** always point to the status-go release branch. | ||
|
|
||
| 2. Issues needing to be fixed on the RC **must** be added to the [Release Board](https://github.com/orgs/status-im/projects/97/views/1). | ||
|
|
||
| 3. Only bug fixes **must** be provided to the release branch. | ||
|
|
||
| 4. Moreover, only **critical** bug fixes **should** be added to the [Release Board](https://github.com/orgs/status-im/projects/97/views/1) and committed to the release branch. | ||
| 1. Critical bugs are issues that affect: | ||
| 1. security | ||
| 2. potential data or funds loss | ||
| 3. crashes | ||
| 4. full regressions | ||
| 5. One or more Testing days **should** be done by the entire Status team to find any regressions. | ||
| 1. The Status team **should** split in testing groups to help test features. | ||
| 2. Testing groups **should** contain people from different teams to spread the knowledge. | ||
| 3. Testing days **must** use a list of current features to test. | ||
| 4. The list **should** include a column listing issues found and by whom. | ||
| 5. The list **should** include an indicator whether that feature is covered by end-to-end (e2e) test and/or functional tests. | ||
| 6. The list **should** contain a section documenting which features were recently **added** or **refactored**. | ||
| 7. The recently added or refactored features **should** be the most tested. | ||
| 8. Features on the list **can** be tested by multiple testing groups. | ||
|
|
||
| 6. Regressions **should** be mentioned to the QA team so that they can plan and implement e2e tests to prevent further regressions of the sorts (to be implemented on master). | ||
|
|
||
| 7. Code coverage does **not** need to be met on the release branch. | ||
|
|
||
| 8. Features **must not** be allowed to be added to the release branch under any circumstances. | ||
|
|
||
| 9. Fixes for issues identified during the RC phase **must** be worked on and committed on the release branch **first**. | ||
|
|
||
| 10. Once a fix has been applied to the release branch, it **must** be ported to the master branch by the author of the commit. | ||
|
|
||
| 11. A new RC build **can** be triggered every day, if there are new fixes in the release branch. | ||
| 12. Releases and RCs **must** have unique semantic numbers in the `VERSION` file and `tag`. | ||
| 1. Release format: `2.36.0` | ||
| 2. RC format: `2.36.0-rc.1` | ||
| 13. The commit updating the `VERSION` file **must** have a `tag` matching the same version number on it. | ||
|
|
||
|
|
||
| ## Frequently asked questions | ||
|
|
||
| ### When is a release ready to be cut? | ||
|
|
||
| A release is considered ready to be cut when all **Key** features are **Done**. | ||
|
|
||
| A **Key** feature is a feature identified on the [Roadmap](https://github.com/status-im/status-app/blob/master/docs/roadmap.md) as the most important features for that release. | ||
|
|
||
| A feature is considered **Done** when all issues of its Epic are closed. An Epic **must** include a testing issue, where one of the dev who worked on the issue meets with one of the designers and/or the Product Manager to demo the issue. Designers and/or the PM **should** open any issue they find on the new feature. | ||
|
|
||
| #### What happens to the other features not ready at the time of the release cut? | ||
|
|
||
| The remaining features listed on the [Roadmap](https://github.com/status-im/status-app/blob/master/docs/roadmap.md) on the same milestone, but that were not identified as **key**, will simply be pushed to the next milestone. | ||
|
|
||
| All new features **must** implement a **feature flag**. Therefore, unfinished features **must not** affect negatively the master and release branches. | ||
|
|
||
| ### Why commit to the release branch first and not master? | ||
|
|
||
| 1. It is faster for the release. | ||
| 2. Less possibilities of conflicts on the release branch. | ||
| 3. Cherry-picked commits are often **not** tested. That is acceptable on master, but **unacceptable** on the release branch. | ||
| 4. Issues do **not** close as completed when merged on the release branch. Therefore, it is easy to spot that the commit needs to be cherry-picked to master. | ||
|
|
||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm missing a short note about how we tag and version the releases