- 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
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
.
Set a target version:
# Note: no "v" prefix here!
export RELEASE_VERSION="0.3.0"
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
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.
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%??}
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
-
Find the tag you just pushed on the repo:
-
Click the "..." and choose "create release".
-
Copy the release notes into the web form.
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.