5.2 KiB
title, layout
| title | layout |
|---|---|
| Release Instructions | docs |
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
- 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.2.0-beta.1exists, and you're releasingv1.2.0-beta.2orv1.2.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=<VERSION> make gen-docs(e.g.NEW_DOCS_VERSION=v1.2.0 make gen-docsorNEW_DOCS_VERSION=v1.2.0-beta.1 make gen-docs). - 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.
- Choose a name for your token.
- Check the "repo" scope.
- 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.
-
Make sure your working directory is clean:
git statusshould shownothing to commit, working tree clean. -
Run
git fetch upstream main && git checkout upstream/main. -
Run
git tag <VERSION>(e.g.git tag v1.2.0orgit tag v1.2.0-beta.1). -
Run
git push upstream <VERSION>(e.g.git push upstream v1.2.0orgit push upstream v1.2.0-beta.1). This will trigger the Travis CI job that builds/publishes the Docker images. -
Generate the GitHub release (it will be created in "Draft" status, which means it's not visible to the outside world until you click "Publish"):
GITHUB_TOKEN=your-github-token \ RELEASE_NOTES_FILE=changelogs/CHANGELOG-<major>.<minor>.md \ PUBLISH=true \ make release -
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)