Skip to content

Commit 9403ac0

Browse files
chore: initial update of release-process
1 parent adeb1a9 commit 9403ac0

File tree

1 file changed

+47
-21
lines changed

1 file changed

+47
-21
lines changed

docs/contributors/release-process.md

Lines changed: 47 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,44 +6,42 @@ For more context, see https://trunkbaseddevelopment.com/branch-for-release/
66

77
## How to do releases
88

9-
### Before release
9+
### Prerequisites
10+
11+
- All issues under the corresponding release [milestone](https://github.com/waku-org/nwaku/milestones) have been closed or, after consultation, deferred to the next release.
12+
- All submodules are up to date.
13+
> Updating submodules requires a PR (and very often several "fixes" to maintain compatibility with the changes in submodules). That PR process must be done and merged a couple of days before the release.
1014
11-
Ensure all items in this list are ticked:
12-
- [ ] All issues under the corresponding release [milestone](https://github.com/waku-org/nwaku/milestones) has been closed or, after consultation, deferred to a next release.
13-
- [ ] All submodules are up to date.
14-
> **IMPORTANT:** Updating submodules requires a PR (and very often several "fixes" to maintain compatibility with the changes in submodules). That PR process must be done and merged a couple of days before the release.
1515
> In case the submodules update has a low effort and/or risk for the release, follow the ["Update submodules"](./git-submodules.md) instructions.
16+
1617
> If the effort or risk is too high, consider postponing the submodules upgrade for the subsequent release or delaying the current release until the submodules updates are included in the release candidate.
17-
- [ ] The [js-waku CI tests](https://github.com/waku-org/js-waku/actions/workflows/ci.yml) pass against the release candidate (i.e. nwaku latest `master`).
18-
> **NOTE:** This serves as a basic regression test against typical clients of nwaku.
19-
> The specific job that needs to pass is named `node_with_nwaku_master`.
2018
21-
### Performing the release
19+
### Release process ( step by step )
2220

2321
1. Checkout a release branch from master
2422

2523
```
2624
git checkout -b release/v0.1.0
2725
```
2826
29-
1. Update `CHANGELOG.md` and ensure it is up to date. Use the helper Make target to get PR based release-notes/changelog update.
27+
2. Update `CHANGELOG.md` and ensure it is up to date. Use the helper Make target to get PR based release-notes/changelog update.
3028
3129
```
3230
make release-notes
3331
```
3432
35-
1. Create a release-candidate tag with the same name as release and `-rc.N` suffix a few days before the official release and push it
33+
3. Create a release-candidate tag with the same name as release and `-rc.N` suffix a few days before the official release and push it
3634
3735
```
3836
git tag -as v0.1.0-rc.0 -m "Initial release."
3937
git push origin v0.1.0-rc.0
4038
```
4139
42-
This will trigger a [workflow](../../.github/workflows/pre-release.yml) which will build RC artifacts and create and publish a Github release
40+
This will trigger a [workflow](../../.github/workflows/pre-release.yml) which will build RC artifacts and create and publish a GitHub release
4341
44-
1. Open a PR from the release branch for others to review the included changes and the release-notes
42+
4. Open a PR from the release branch for others to review the included changes and the release-notes
4543
46-
1. In case additional changes are needed, create a new RC tag
44+
5. In case additional changes are needed, create a new RC tag
4745
4846
Make sure the new tag is associated
4947
with CHANGELOG update.
@@ -56,10 +54,37 @@ Ensure all items in this list are ticked:
5654
git push origin v0.1.0-rc.1
5755
```
5856
59-
1. Validate the release. For the release validation process, please refer to the following [guide](https://www.notion.so/Release-Process-61234f335b904cd0943a5033ed8f42b4#47af557e7f9744c68fdbe5240bf93ca9)
60-
61-
1. Once the release-candidate has been validated, create a final release tag and push it.
62-
We also need to merge release branch back to master as a final step.
57+
6. **Validation of release candidate**
58+
59+
- **Automated testing**
60+
- Ensure js-waku tests are green against the release candidate
61+
- Ask Vac-QA and Vac-DST to run their available tests against the release candidate, share all release candidate with both team.
62+
63+
> We need additional report like [this](https://www.notion.so/DST-Reports-1228f96fb65c80729cd1d98a7496fe6f) specificly from DST team.
64+
65+
- **Waku fleet testing**
66+
- Lock `waku.test` and `waku.sandbox` fleet to release candidate version
67+
- Search _Kibana_ logs from the previous month (since last release was deployed), for possible crashes or errors in `waku.test` and `waku.sandbox`.
68+
- Most relevant logs are `(fleet: "waku.test" AND message: "SIGSEGV")` OR `(fleet: "waku.sandbox" AND message: "SIGSEGV")`
69+
- Run release candidate with `waku-simulator`, ensure that nodes connected to each other
70+
- Unlock `waku.test` to resume auto-deployment of latest `master` commit
71+
72+
- **Status fleet testing**
73+
- Deploy release candidate to `status.staging`
74+
- Perform [sanity check](https://www.notion.so/How-to-test-Nwaku-on-Status-12c6e4b9bf06420ca868bd199129b425) and log results as comments in this issue.
75+
- Connect 2 instances to `status.staging` fleet, one in relay mode, the other one in light client.
76+
- 1:1 chats with each other
77+
- Send and receive messages in a community
78+
- Close one instance, send messages with second instance, reopen first instance and confirm messages sent while offline are retrieved from store
79+
- Perform checks based on _end-user impact_
80+
- Inform other (Waku and Status) CCs to point their instance to `status.staging` for a few days. Ping Status colleagues from their Discord server or [Status community](https://status.app) (not blocking point.)
81+
- Ask Status-QA to perform sanity checks (as described above) + checks based on _end user impact_; do specify the version being tested
82+
- Ask Status-QA or infra to run the automated Status e2e tests against `status.staging`
83+
- Get other CCs sign-off: they comment on this PR "used app for a week, no problem", or problem reported, resolved and new RC
84+
- **Get Status-QA sign-off**. Ensuring that `status.test` update will not disturb ongoing activities.
85+
86+
7. Once the release-candidate has been validated, create a final release tag and push it.
87+
We also need to merge the release branch back into master as a final step.
6388
6489
```
6590
git checkout release/v0.1.0
@@ -69,8 +94,9 @@ We also need to merge release branch back to master as a final step.
6994
git pull
7095
git merge release/v0.1.0
7196
```
97+
8. Update `waku-rust-bindings`, `waku-simulator` and `nwaku-compose` to use the new release.
7298
73-
1. Create a [Github release](https://github.com/waku-org/nwaku/releases) from the release tag.
99+
9. Create a [GitHub release](https://github.com/waku-org/nwaku/releases) from the release tag.
74100
75101
* Add binaries produced by the ["Upload Release Asset"](https://github.com/waku-org/nwaku/actions/workflows/release-assets.yml) workflow. Where possible, test the binaries before uploading to the release.
76102
@@ -84,7 +110,7 @@ We also need to merge release branch back to master as a final step.
84110
> - `IMAGE_NAME`: `wakuorg/nwaku`
85111
> - `NIMFLAGS`: `--colors:off -d:disableMarchNative -d:chronicles_colors:none -d:postgres`
86112
> - `GIT_REF` the release tag (e.g. `v0.16.0`)
87-
3. Update the default nwaku image in [nwaku-compose](https://github.com/waku-org/nwaku-compose/blob/master/docker-compose.yml)
113+
3. Bump the nwaku dependency in [nwaku-compose](https://github.com/waku-org/nwaku-compose/blob/master/docker-compose.yml)
88114
4. Deploy the release to appropriate fleets:
89115
- Inform clients
90116
> **NOTE:** known clients are currently using some version of js-waku, go-waku, nwaku or waku-rs.
@@ -116,4 +142,4 @@ We also need to merge release branch back to master as a final step.
116142
117143
4. Once the release-candidate has been validated and changelog PR got merged, cherry-pick the changelog update from master to the release branch. Create a final release tag and push it.
118144
119-
5. Create a [Github release](https://github.com/waku-org/nwaku/releases) from the release tag and follow the same post-release process as usual.
145+
5. Create a [GitHub release](https://github.com/waku-org/nwaku/releases) from the release tag and follow the same post-release process as usual.

0 commit comments

Comments
 (0)