Skip to content
This repository has been archived by the owner on Sep 30, 2024. It is now read-only.

3.20 release tracking issue #13374

Closed
41 tasks done
davejrt opened this issue Aug 26, 2020 · 3 comments
Closed
41 tasks done

3.20 release tracking issue #13374

davejrt opened this issue Aug 26, 2020 · 3 comments
Assignees
Labels
release-tracking Release tracking issue: https://about.sourcegraph.com/handbook/engineering/releases
Milestone

Comments

@davejrt
Copy link
Contributor

davejrt commented Aug 26, 2020

3.20 Release (2020-9-20)

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.

2020-9-14 (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-9-15).
    
    All changes that will be part of `3.20` (and all associated CHANGELOG updates) should be in `main` 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 by posting in #product that there is a draft of the release blog post.

2020-9-15 (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).
  • Commit this CHANGELOG edit to main using a PR.
  • Create the 3.20 branch off the CHANGELOG commit in the previous step: git branch 3.20 && git push origin 3.20.
  • Tag and announce the first release candidate:
    yarn run release release-candidate:create 3.20.0-rc.1
    yarn run release release-candidate:dev-announce 3.20.0-rc.1
    
  • Run regression tests:
    • Follow README.md 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
    • 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.

2020-9-15 to 2020-9-18: Cut new release candidates

As necessary, git cherry-pick bugfix (not feature!) commits from main into the release branch.
Aggressively revert or disable features that may cause delays:

Cut a new release candidate daily if necessary:

  • Cut and announce release candidate:
    N=<release-candidate-number> yarn run release release-candidate:create 3.20.0-rc.$N
    N=<release-candidate-number> yarn run release release-candidate:dev-announce 3.20.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-9-18 (1 work day before release) Tag final release

  • Tag and announce on Slack the final release:
    yarn run release release-candidate:create 3.20.0
    yarn run release release-candidate:dev-announce 3.20.0
    
  • Verify the CHANGELOG on
    main 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:
    • Create the 3.20 release branch from master.
      VERSION='3.20' bash -c 'git fetch origin && git checkout origin/main && git branch  && git checkout $VERSION && git push -u origin $VERSION'
      
    • Trigger an upgrade using the Update tags workflow - set version to a semver contraint that will apply the version you want (e.g. ~$MAJOR.$MINOR) and set the branch to the branch you want to upgrade (i.e. $MAJOR.$MINOR). Merge the pull request that gets created (example).
    • Tag the v3.20.0 release at this commit.
      VERSION='v3.20.0' bash -c 'git tag -a "$VERSION" -m "$VERSION" && git push origin "$VERSION"'
      
    • Add a new section to the Kubernetes CHANGELOG
  • Release Docker Compose by following these instructions
  • Open (but do not merge) PRs that publish the new release:
    # Run this in the main sourcegraph repository in the `dev/release` directory on `main` branch:
    yarn run release release:publish 3.20.0
    
  • Create (but do not merge) a PR to update https://docs.sourcegraph.com/admin/updates/kubernetes indicating the steps required to upgrade.
  • 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).
  • Post in #product and verify the blog post is ready to be merged.

2020-9-20 by 10am: Release

  • Merge the release-publishing PRs created previously.
  • Cherry pick the release-publishing PR from sourcegraph/sourcegraph@main into the release branch.
  • Ask the product team to 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, because config.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.
@davejrt davejrt added this to the 3.20 milestone Aug 26, 2020
@davejrt davejrt self-assigned this Aug 26, 2020
@davejrt
Copy link
Contributor Author

davejrt commented Sep 14, 2020

Dear all,

This is your release captain speaking. 🚂🚂🚂

Branch cut for the 3.20 release is scheduled for tomorrow.

Is this issue / PR going to make it in time? Please change the milestone accordingly.
When in doubt, reach out!

Thank you

@bobheadxi
Copy link
Member

@davejrt I've updated the checklist with the changes in sourcegraph/about#1517 - let me know if anything comes up during this process!

@uwedeportivo
Copy link
Contributor

3.20 is in the books

@bobheadxi bobheadxi added the release-tracking Release tracking issue: https://about.sourcegraph.com/handbook/engineering/releases label Oct 22, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
release-tracking Release tracking issue: https://about.sourcegraph.com/handbook/engineering/releases
Projects
None yet
Development

No branches or pull requests

3 participants