From d433d7c9ac32cb65376d6d09f5e359f255ecca81 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Fri, 2 Aug 2019 10:45:23 -0700 Subject: [PATCH] feat: add stage 0 We do automated testing before we test on infra, etc. Make that explicit. --- docs/RELEASE_ISSUE_TEMPLATE.md | 11 ++++++----- docs/releases.md | 14 ++++++++------ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/docs/RELEASE_ISSUE_TEMPLATE.md b/docs/RELEASE_ISSUE_TEMPLATE.md index 7bb2bbc66..c7b53f920 100644 --- a/docs/RELEASE_ISSUE_TEMPLATE.md +++ b/docs/RELEASE_ISSUE_TEMPLATE.md @@ -30,16 +30,17 @@ For each RC published in each stage: Checklist: -- [ ] **Stage 1 - Internal Testing** +- [ ] **Stage 0 - Automated Testing** - [ ] Feature freeze. If any "non-trivial" changes (see the footnotes of [docs/releases.md](https://github.com/ipfs/go-ipfs/tree/master/docs/releases.md) for a definition) get added to the release, uncheck all the checkboxes and return to this stage. - - [ ] CHANGELOG.md has been updated - - use [`./bin/mkreleaselog`](https://github.com/ipfs/go-ipfs/tree/master/bin/mkreleaselog) to generate a nice starter list - [ ] Automated Testing (already tested in CI) - Ensure that all tests are passing, this includes: - [ ] unit, sharness, cross-build, etc (`make test`) - [ ] lint (`make test_go_lint`) - [ ] [interop](https://github.com/ipfs/interop#test-with-a-non-yet-released-version-of-go-ipfs) - [ ] [go-ipfs-api](https://github.com/ipfs/go-ipfs-api) - [ ] [go-ipfs-http-client](https://github.com/ipfs/go-ipfs-http-client) +- [ ] **Stage 1 - Internal Testing** + - [ ] CHANGELOG.md has been updated + - use [`./bin/mkreleaselog`](https://github.com/ipfs/go-ipfs/tree/master/bin/mkreleaselog) to generate a nice starter list - [ ] Network Testing: - [ ] test lab things - TBD - [ ] Infrastructure Testing: @@ -52,12 +53,12 @@ Checklist: - [ ] [IPFS Desktop](https://github.com/ipfs-shipyard/ipfs-desktop) - @hacdias - [ ] [IPFS Companion](https://github.com/ipfs-shipyard/ipfs-companion) - @lidel - [ ] [NPM on IPFS](https://github.com/ipfs-shipyard/npm-on-ipfs) - @achingbrain -- [ ] **Stage 2 - Public Beta** +- [ ] **Stage 2 - Community Dev Testing** - [ ] Reach out to the IPFS _early testers_ listed in [docs/EARLY_TESTERS.md](https://github.com/ipfs/go-ipfs/tree/master/docs/EARLY_TESTERS.md) for testing this release (check when no more problems have been reported). If you'd like to be added to this list, please file a PR. - [ ] Reach out to on IRC for beta testers. - [ ] Run tests available in the following repos with the latest beta (check when all tests pass): - [ ] [orbit-db](https://github.com/orbitdb/orbit-db) -- [ ] **Stage 3 - Soft Release** +- [ ] **Stage 3 - Community Prod Testing** - [ ] Documentation - [ ] Ensure that [CHANGELOG.md](https://github.com/ipfs/go-ipfs/tree/master/CHANGELOG.md) is up to date - [ ] Ensure that [README.md](https://github.com/ipfs/go-ipfs/tree/master/README.md) is up to date diff --git a/docs/releases.md b/docs/releases.md index 838d26df4..a964142ab 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -17,12 +17,14 @@ We might expand the six week release schedule in case of: ## Release Flow -`go-ipfs` releases come in 4 stages designed to gradually roll out changes and reduce the impact of any regressions that may have been introduced. If we need to merge non-trivial[2] changes during the process, we start over at stage 1. +`go-ipfs` releases come in 5 stages designed to gradually roll out changes and reduce the impact of any regressions that may have been introduced. If we need to merge non-trivial[2] changes during the process, we start over at stage 0. + +### Stage 0 - Automated Testing + +At this stage, we expect _all_ automated tests (interop, testlab, performance, etc.) to pass. ### Stage 1 - Internal Testing -Before this stage, we expect _all_ tests (interop, testlab, performance, etc.) to pass. - At this stage, we'll: - 1. Start a partial-rollout to our own infrastructure. - 2. Test against ipfs and ipfs-shipyard applications. @@ -31,13 +33,13 @@ At this stage, we'll: - 1. Make sure we haven't introduced any obvious regressions. - 2. Test the release in an environment we can monitor and easily roll back (i.e., our own infra). -### Stage 2 - Public Beta +### Stage 2 - Community Dev Testing At this stage, we'll announce the impending release to the community and ask for beta testers. **Goal:** Test the release in as many non-production environments as possible. This is relatively low-risk but gives us a _breadth_ of testing internal testing can't. -### Stage 3 - Soft Release +### Stage 3 - Community Prod Testing At this stage, we consider the release to be "production ready" and ask will ask the community and our early testers to (partially) deploy the release to their production infrastructure. @@ -53,7 +55,7 @@ At this stage, the release is "battle hardened" and ready for wide deployment. ## Performing a Release -The release is managed by the `Lead Maintainer` for `go-ipfs`. It starts with the opening of an issue containing the content available on the [RELEASE_ISSUE_TEMPLATE](./RELEASE_ISSUE_TEMPLATE.md). Then, the 4 stages will be followed until the release is done. +The release is managed by the `Lead Maintainer` for `go-ipfs`. It starts with the opening of an issue containing the content available on the [RELEASE_ISSUE_TEMPLATE](./RELEASE_ISSUE_TEMPLATE.md). Then, the 5 stages will be followed until the release is done. ## Release Version Numbers (aka semver)