3.22 release tracking issue
Created by: pecigonzalo
3.22 Release
This release is scheduled for Nov 20, 2020, 6:00 PM (UTC).
Note: All yarn run release ...
commands should be run from folder dev/release
.
Note: All yarn run test ...
commands should be run from folder web
.
Setup
-
Ensure release configuration in dev/release/config.json
onmain
is up to date with the parameters for the current release. -
Ensure the latest version of the release tooling has been built before each step using yarn run build
indev/release
.
Nov 13, 2020, 6:00 PM (UTC) (5 work days before release): Prep for branch cut
-
Post a release status update to Slack - review all release-blocking issues, and ensure someone is resolving each. yarn run release release:status
Nov 16, 2020, 6:00 PM (UTC) (4 work days before release): Branch cut
-
Update the changelog and merge the generated pull request: yarn run release changelog:cut
-
Create the 3.22
branch off the CHANGELOG commit in the previous step:git branch 3.22 && git push origin 3.22
.
Upon branch cut, create and test the first release candidate:
-
Tag the first release candidate: yarn run release release:create-candidate 1
-
Run regression tests: -
Follow the Regression tests guide to set up your e2e environment. Run the tests from the web
directory. A more complete set of env vars can be found in this 1password entry. -
New Sourcegraph Docker container: - Run the initializer:
E2E_INIT=true SOURCEGRAPH_BASE_URL=http://localhost:7080 yarn run test:regression -t 'Initialize new Sourcegraph instance'
- Run the regression test suite:
SOURCEGRAPH_BASE_URL=http://localhost:7080 yarn run test:regression
- Run the initializer:
-
Upgrade from previous release: - Run the initializer on a Docker container running the last patch version of the previous major/minor release.
- Upgrade and run the regression test suite.
-
New Sourcegraph Kubernetes cluster: - Run the initializer on a new Sourcegraph Kubernetes cluster.
- Run the regression test suite.
-
-
File any regressions as release-blocker
issues and assign the appropriate teams.
Revert or disable features that may cause delays. As necessary, git cherry-pick
bugfix (not feature!) commits from main
into the release branch. Continue to create new release candidates daily or as necessary, until no more release-blocker
issues remain:
-
Cut the Nth release candidate: N=<release-candidate-number> yarn run release release:create-candidate $N
-
Re-run the automated test suite against the new release candidate, file any regressions as release-blocker
issues.-
If necessary, manually test features or workflows affected by the cherry-pick.
-
-
Post a release status update by running the command below. Ensure someone is resolving each release-blocking issue. If there are no more release-blocking issues, proceed to tag the final release in the next section. yarn run release release:status
Tag final release
Once there are no more release-blocking issues (as reported by the release:status
command) proceed with creating the final release:
-
Verify the CHANGELOG on main
is accurate (no items should have been added since branch cut, but some items may need to be removed). -
Tag the final release: yarn run release release-candidate:create final
-
Wait for the release Docker images to be available in Docker Hub. -
Open PRs that publish the new release and address any action items required to finalize draft PRs (track PR status via the generated release campaign): yarn run release release:stage
Nov 20, 2020, 6:00 PM (UTC): Release
-
From the release campaign, merge the release-publishing PRs created previously. - For sourcegraph, also:
-
Cherry pick the release-publishing PR from sourcegraph/sourcegraph@main
into the release branch.
-
- For sourcegraph, also:
-
Ask the product team to merge the blog post (example). Add the pull request to the release campaign: yarn run release release:add-to-campaign sourcegraph/about <pr-number>
-
Finalize and announce that the release is live: yarn run release release:close
Post-release
-
Notify the next release captain that they are on duty for the next release. They should complete the steps in this section. -
Open a PR to update dev/release/config.json
with the parameters for the current release. -
Run yarn build
to rebuild the release script. -
Create release calendar events, tracking issue, and announcement for next release: # Add calendar events and reminders for key dates in the release cycle yarn run release tracking:release-timeline # Create the release tracking issue (i.e., this issue) yarn run release tracking:release-issue
-
Close this issue. -
Close the milestone.
Note: If a patch release are requested after the release, ask that a patch request issue be filled out and approved first.