Skip to content

Commit 2aee23e

Browse files
committed
iteration on the release procedure
Signed-off-by: Otto van der Schaaf <oschaaf@we-amp.com>
1 parent 8247427 commit 2aee23e

1 file changed

Lines changed: 29 additions & 7 deletions

File tree

RELEASE_PROCEDURE.md

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,39 @@
11
# Release procedure
22

3-
- Update [version_history.md](docs/root/version_history.md).
3+
## Preparation
4+
5+
- Consolidate the [release notes](docs/root/version_history.md).
46
- Make sure breaking changes are explicitly called out.
57
Ideally these have been tracked on the go but it does not hurt to ask around and double
68
check. Running the python integration tests of the previous release with the latest binaries could serve as a double check for this.
79
- Ensure the release notes are complete. Ideally these have been tracked on the go.
8-
- Perform some thorough testing to double down on stability.
10+
- Based on our [semantic versioning](https://semver.org/spec/v2.0.0.html) strategy, our release numbers look like `MAJOR.MINOR.PATCH`. Determine the release type to come up with what the next version should look like:
11+
- Breaking changes increment `MAJOR`, and reset `MINOR.PATCH` to `0.0`
12+
- Added functionality which is backwards compatible increments `MINOR`, and resets `PATCH` to `0`
13+
- Bug fixes increment `PATCH`
14+
15+
## Release steps
16+
17+
1. Speculatively bump the version in [version.h](include/nighthawk/common/version.h) to the version you determined earlier. This may result in version gaps if a release attempt fails, but avoids having to freeze merges to master and/or having to work with release branches. In short it helps keeping the release procedure lean and mean and eliminates the need for blocking others while this procedure is in-flight.
18+
2. Draft a [GitHub tagged release](https://github.com/envoyproxy/nighthawk/releases/new). Earlier releases are tagged like `v0.1`, but as of `0.3.0`we are using [semantic versioning](https://semver.org/spec/v2.0.0.html)
19+
3. Perform thorough testing of the targeted revision to double down on stability [1]
20+
4. Create an optimized build for comparing with the previous release. Changes in performance
21+
and/or measurement accuracy may need to be considered breaking. If in doubt, discuss!
22+
5. If things look good, [File an issue](https://github.com/envoyproxy/nighthawk/issues/new?title=[VOTE]+Release+v0.x&body=Release%20X%20is%20ready%20for%20review.%20Please%20take%20a%20look%20and%20vote!) to raise a vote on publishing the drafted release, and point contributors to that.
23+
6. Allow sufficient time to transpire for others to provide feedback, before moving on to the next step. If nobody raises blocking issues, it is time to go ahead and publish the drafted release.
24+
7. |o/ Announce the new release on Slack, Twitter
25+
26+
In case any of the steps above prevent shipping:
27+
28+
1. Discard the draft release tag, if any
29+
2. Close the voting issue, if any. If needed share context in the issue so everyone has context.
30+
3. Subsequently re-spin the full procedure from the top after the blocking issue is resolved
31+
32+
[1] Consider running the unit tests and integration tests repeatedly and concurrently for while.
33+
It's worth noting that some of the integration tests have not been designed for this, so that part
34+
is not tried and proven yet. (some of the integration tests are sensitive to timing, and may get
35+
unstable when slowed down due to concurrent runs). A sample command to do this:
936

1037
```bash
1138
bazel test --cache_test_results=no --test_env=ENVOY_IP_TEST_VERSIONS=all --runs_per_test=1000 --jobs 50 -c dbg --local_resources 20000,20,0.25 //test:*
1239
```
13-
14-
- Draft a [GitHub tagged release](https://github.com/envoyproxy/nighthawk/releases/new) using the [current version number on master]((include/nighthawk/common/version.h)). Earlier releases are tagged like `v0.1` so currently we use that as a naming convention.
15-
- [File an issue](https://github.com/envoyproxy/nighthawk/issues/new?title=[VOTE]+Release+v0.x&body=Release%20X%20is%20ready%20for%20review.%20Please%20take%20a%20look%20and%20vote!) to raise a vote on publishing the drafted release and point contributors to that.
16-
- If nobody raises blocking issues, it's time to go ahead and publish the drafted release!
17-
- Bump `MAJOR_VERSION` / `MINOR_VERSION` in [version.h](include/nighthawk/common/version.h) to the next version.

0 commit comments

Comments
 (0)