You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/contributors/release-process.md
+47-21Lines changed: 47 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,44 +6,42 @@ For more context, see https://trunkbaseddevelopment.com/branch-for-release/
6
6
7
7
## How to do releases
8
8
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.
10
14
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.
15
15
> In case the submodules update has a low effort and/or risk for the release, follow the ["Update submodules"](./git-submodules.md) instructions.
16
+
16
17
> 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`.
20
18
21
-
### Performing the release
19
+
### Release process ( step by step )
22
20
23
21
1. Checkout a release branch from master
24
22
25
23
```
26
24
git checkout -b release/v0.1.0
27
25
```
28
26
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.
30
28
31
29
```
32
30
make release-notes
33
31
```
34
32
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
36
34
37
35
```
38
36
git tag -as v0.1.0-rc.0 -m "Initial release."
39
37
git push origin v0.1.0-rc.0
40
38
```
41
39
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
43
41
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
45
43
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
47
45
48
46
Make sure the new tag is associated
49
47
with CHANGELOG update.
@@ -56,10 +54,37 @@ Ensure all items in this list are ticked:
56
54
git push origin v0.1.0-rc.1
57
55
```
58
56
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.
63
88
64
89
```
65
90
git checkout release/v0.1.0
@@ -69,8 +94,9 @@ We also need to merge release branch back to master as a final step.
69
94
git pull
70
95
git merge release/v0.1.0
71
96
```
97
+
8. Update `waku-rust-bindings`, `waku-simulator` and `nwaku-compose` to use the new release.
72
98
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.
74
100
75
101
* 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.
76
102
@@ -84,7 +110,7 @@ We also need to merge release branch back to master as a final step.
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)
88
114
4. Deploy the release to appropriate fleets:
89
115
- Inform clients
90
116
> **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.
116
142
117
143
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.
118
144
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