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.jsononmainis 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 buildindev/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.22branch 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 webdirectory. 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-blockerissues 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-blockerissues.-
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 mainis 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@maininto 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.jsonwith the parameters for the current release. -
Run yarn buildto 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.