3.12 release tracking issue
View options
- Truncate descriptions
Created by: beyang
3.12 Release (2020-1-20)
Note: All yarn run release ...
commands should be run from folder dev/release
.
2020-1-13 (5 work days before release): Prep for branch cut
-
Post to #dev-announce the following message:
:captain: *Release captain announcement:* Branch cut will be at the start of the next working day (2020-1-14). All changes that will be part of `3.12` (and all associated CHANGELOG updates) should be in `master` by tomorrow. Otherwise, they will not be included in the release.
-
Use
./dev/release-ping.sh
to ping teammates who have open issues or PRs in the milestone to ask them to triage those that won't make it into the release. - Verify there is a draft of the release blog post.
2020-1-14 (4 work days before release): Branch cut
-
Verify for each CHANGELOG item the following (if any item does not have these, disable it,
notify the owner, and remove it from the CHANGELOG):
- It has an owner attached to it
- It has undergone manual QA (and the QA was done on k8s.sgdev.org or at scale if the feature requires it).
- It is covered by the regression test suite
-
Add a new section
## 3.MINOR
to CHANGELOG.md immediately under## Unreleased changes
. Add new empty sections under## Unreleased changes
(example). -
Create the
3.12
branch off the CHANGELOG commit in the previous step:git branch 3.12 && git push origin 3.12
. -
Tag and announce the first release candidate:
yarn run release release-candidate:create 3.12.0-rc.1 yarn run release release-candidate:announce 3.12.0-rc.1
-
Run regression tests:
-
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.
-
New Sourcegraph Docker container:
2020-1-14 to 2020-1-17: Cut new release candidates
As necessary, git cherry-pick
bugfix (not feature!) commits from master
into the release branch.
Aggressively revert or disable features that may cause delays:
- Review all release-blocking issues. Add them as checklist items here. Ensure someone is resolving each.
- Review all other open issues in the milestone and ask assignees to triage them to a different milestone (preferring Backlog).
Cut a new release candidate daily if necessary:
-
Cut and announce release candidate:
N=<release-candidate-number> yarn run release release-candidate:create 3.12.0-rc.$N N=<release-candidate-number> yarn run release release-candidate:announce 3.12.0-rc.$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.
2020-1-17 (1 work day before release) Tag final release
-
Tag and announce on Slack the final release:
yarn run release release-candidate:create 3.12.0` yarn run release release-candidate:announce 3.12.0
-
Verify the CHANGELOG on
master
is accurate (no items should have been added since branch cut, but some items may need to be removed). - Wait for the release Docker images to be available at https://hub.docker.com/r/sourcegraph/server/tags.
-
Cut the Kubernetes cluster release in deploy-sourcegraph:
-
Wait for Renovate to open a PR to update the image tags and merge that PR into
master
(example). -
Create the
3.12
release branch from this commit.VERSION=`3.12` bash -c 'git fetch origin && git checkout origin/master && git branch $VERSION && git checkout $VERSION && git push -u origin $VERSION'
-
Tag the
v3.12.0
release at this commit.VERSION='v3.12.0' bash -c 'git tag -a "$VERSION" -m "$VERSION" && git push origin "$VERSION"'
-
Wait for Renovate to open a PR to update the image tags and merge that PR into
-
Open (but do not merge) PRs that publish the new release:
yarn run release release:publish 3.12.0
- Review all issues in the release milestone. Backlog things that didn't make it into the release and ping issues that still need to be done for the release (e.g. Tweets, marketing).
- Verify the blog post is ready to be merged.
2020-1-20 by 10am: Release
- Merge the release-publishing PRs created previously.
- Merge the blog post (example).
Post-release
- Notify the next release captain that they are on duty for the next release. They should complete the steps in this section.
-
Ensure you have the latest version github.com/sourcegraph/about checked out and it is located
at
../about
(relative to this repository). -
Update
dev/release/config.json
with the parameters for the current release. -
Run
yarn build
to rebuild the release script (necessary, becauseconfig.json
is compiled in). -
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 add-timeline-to-calendar # Create the release tracking issue (i.e., this issue) yarn run release tracking-issue:create # Post link to tracking to #dev-announce yarn run release tracking-issue:announce
- Close this issue.
- Close the milestone.