* Add release tools Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Document the tag-release release tool Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Make sure the upstream used is correct Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Add copyright statement Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Address review feedback * Pause to allow for cherry-picking on the release branch before pushing it * Move master branch logic into an else statement * Correct typo Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Uncomment check for dirty git working tree Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
6.0 KiB
Release Instructions
Ahead of Time
(GA Only) Release Blog Post PR
Prepare a PR containing the release blog post. It's usually easiest to make a copy of the most recent existing post, then replace the content as appropriate.
You also need to update site/index.html to have "Latest Release Information" contain a link to the new post.
(Pre-Release and GA) Changelog and Docs PR
- Set a variable with the full Velero version
export VELERO_VERSION=v<MAJOR>.<MINOR>.<PATCH>[-beta.1]. This will be used throughout the whole process. - In a branch, create the file
changelogs/CHANGELOG-<major>.<minor>.md(if it doesn't already exist) by copying the most recent one. - Run
make changelogto generate a list of all unreleased changes. Copy/paste the output intoCHANGELOG-<major>.<minor>.md, under the "All Changes" section for the release.- You may choose to tweak formatting on the list of changes by adding code blocks, etc.
- (GA Only) Remove all changelog files from
changelogs/unreleased. - Update the main
CHANGELOG.mdfile to properly reference the release-specific changelog file:- (Pre-Release) List the release under "Development release"
- (GA) List the release under "Current release", remove any pre-releases from "Development release", and move the previous release into "Older releases".
- If there is an existing set of pre-release versioned docs for the version you are releasing (i.e.
site/docs/v1.4-preexists, and you're releasingv1.4.0-beta.2orv1.4.0):- Remove the directory containing the pre-release docs, i.e.
site/docs/<pre-release-version>. - Delete the pre-release docs table of contents file, i.e.
site/_data/<pre-release-version>-toc.yml. - Remove the pre-release docs table of contents mapping entry from
site/_data/toc-mapping.yml. - Remove all references to the pre-release docs from
site/_config.yml.
- Remove the directory containing the pre-release docs, i.e.
- Run
NEW_DOCS_VERSION=v<major.minor> make gen-docs(e.g.NEW_DOCS_VERSION=v1.2 make gen-docsorNEW_DOCS_VERSION=v1.2-pre make gen-docs).- Note that:
- NEW_DOCS_VERSION defines the version that the docs will be tagged with (i.e. what's in the URL, what shows up in the version dropdown on the site). This should be formatted as either
v1.4(for a GA release), orv1.4-pre(for an alpha/beta/RC). - VELERO_VERSION defines the tag of Velero that any
https://github.com/vmware-tanzu/velero/...links in the docs should redirect to.
- NEW_DOCS_VERSION defines the version that the docs will be tagged with (i.e. what's in the URL, what shows up in the version dropdown on the site). This should be formatted as either
- Note that:
- Follow the additional instructions at
site/README-JEKYLL.mdto complete the docs generation process. - Do a review of the diffs, and/or run
make serve-docsand review the site. - Submit a PR containing the changelog and the version-tagged docs.
(Pre-Release and GA) GitHub Token
To run the goreleaser process to generate a GitHub release, you'll need to have a GitHub token. See https://goreleaser.com/environment/ for more details.
You may regenerate the token for every release if you prefer.
If you don't already have a token
- Go to https://github.com/settings/tokens/new?scopes=repo.
- Choose a name for your token.
- Click "Generate token".
- Save the token value somewhere - you'll need it during the release, in the
GITHUB_TOKENenvironment variable.
If you do already have a token, but need to regenerate it
- Go to https://github.com/settings/tokens.
- Click on the name of the relevant token.
- Click "Regenerate token".
- Save the token value somewhere - you'll need it during the release, in the
GITHUB_TOKENenvironment variable.
During Release
This process is the same for both pre-release and GA, except for the fact that there will not be a blog post PR to merge for pre-release versions.
-
Merge the changelog + docs PR, so that it's included in the release tag.
-
Set your GitHub token as an environment variable.
export GITHUB_TOKEN=<your token value> -
Run
/hack/release-tools/tag-release.shand follow the instructions. -
Navigate to the draft GitHub release, at https://github.com/vmware-tanzu/velero/releases.
-
If this is a patch release (e.g.
v1.2.1), note that the fullCHANGELOG-1.2.mdcontents will be included in the body of the GitHub release. You need to delete the previous releases' content (e.g.v1.2.0's changelog) so that only the latest patch release's changelog shows. -
Do a quick review for formatting. Note: the
goreleaserprocess should detect if it's a pre-release version, and check that box in the GitHub release appropriately, but it's always worth double-checking. -
Publish the release.
-
By now, the Docker images should have been published. Perform a smoke-test - for example:
- Download the CLI from the GitHub release
- Use it to install Velero into a cluster (or manually update an existing deployment to use the new images)
- Verify that
velero versionshows the expected output - Run a backup/restore and ensure it works
-
(GA Only) Merge the blog post PR.
-
Announce the release:
- Twitter (mention a few highlights, link to the blog post)
- Slack channel
- Google group (this doesn't get a lot of traffic, and recent releases may not have been posted here)
Post-release - Homebrew version update
From a Mac, you can run brew bump-formula-pr to create a new PR with the updated release's information.
To make sure it's the most up-to-date:
- If you don't already have one, create a GitHub access token for Homebrew
- Run
export HOMEBREW_GITHUB_API_TOKEN=your_token_hereon your command line to make sure thatbrewcan work on GitHub on your behalf. - Run
hack/brew-update.sh. This script will download the necessary files, do the checks, and invoke the brew helper to submit the PR, which will open in your browser.
Post-release - Windows Chocolatey version update
From a Windows computer, follow the step-by-step instructions to create the Windows Chocolatey package for Velero CLI