Skip to content

Latest commit

 

History

History
104 lines (72 loc) · 3.05 KB

RELEASING.md

File metadata and controls

104 lines (72 loc) · 3.05 KB

Exposure Notifications Servers Release Process

  • Releases are cut every Tuesday (target time 9am, US Pacific Time)
  • All releases will have a release branch and a corresponding tag
  • Both the exposure-notifications-sever and exposure-notifications-verification-server wil follow the same release numbering

Dependencies

You need the kubernetes release-notes tool to generate release notes.

GO111MODULE=on go get k8s.io/release/cmd/release-notes

You'll also need a GitHub Personal Access Token with permission to read repositories. It should be exported as GITHUB_TOKEN.

Cutting a release

Set a target version:

# Note: no "v" prefix here!
export RELEASE_VERSION="0.3.0"

Generate release notes

This is a diff from the last time a release was generated.

export LAST_RELEASE_TAG="TODO" # e.g. v0.2.2

release-notes \
  --github-org "google" \
  --github-repo "exposure-notifications-server" \
  --branch "main" \
  --required-author ""  \
  --start-rev "${LAST_RELEASE_TAG}" \
  --end-rev "main" \
  --release-version "${RELEASE_VERSION}" \
  --output "/tmp/relnotes-${RELEASE_VERSION}.md" \
  --repo-path "/tmp/relnotes-repo" \
  --dependencies true

Update the release notes

Edit the generated relnotes file and add anything that may have been missed. It's also wise to call out database migrations, possible breaking changes, and new environment variables that are are needed.

Create a release branch

Ensure that you are on main, that you are up to date (the commit you want to cut the release at). This requires repo admin privelages.

git checkout -b release-${RELEASE_VERSION%??}
git push --set-upstream origin release-${RELEASE_VERSION%??}

If you are cutting a patch release, the release-x.y branch likely already exists:

git fetch --all
git checkout -t origin/release-${RELEASE_VERSION%??}
# cherry-pick or decide the best way to bring over changes
git push origin release-${RELEASE_VERSION%??}

Create and push tag

Ensure you are on the release branch and create a new tag:

git tag -a -s -m "Release v${RELEASE_VERSION}" v${RELEASE_VERSION}
git push origin --tags

Draft a new release on GitHub

  1. Find the tag you just pushed on the repo:

  2. Click the "..." and choose "create release".

  3. Copy the release notes into the web form.

Go do the same on exposure-notifications-verification-server

Before releasing, update the go.mod file for the exposure-notifications-verification-server so that it references the exposure-notifications-server version that was just released:

# From github.com/google/exposure-notifications-verification-server
go get -u github.com/google/exposure-notifications-server@${RELEASE_VERSION}

# Cleanup
go mod tidy
go mod verify

The version being tracked may have been un-pined since the last release or just should generally be updated to keep the projects in sync.