site/content/resources/release-process.md
A minor release is e.g. v1.11.0.
A minor release requires:
Set environment variables for use in subsequent steps:
export CONTOUR_RELEASE_VERSION=v1.11.0
export CONTOUR_RELEASE_VERSION_MAJOR=1
export CONTOUR_RELEASE_VERSION_MINOR=11
export KUBERNETES_MIN_VERSION=1.20
export KUBERNETES_MAX_VERSION=1.22
export CONTOUR_UPSTREAM_REMOTE_NAME=upstream
Check out main, ensure it's up to date, and ensure you have a clean working directory.
Create a new local feature branch from main.
Generate a new set of versioned docs, plus a changelog:
go run ./hack/release/prepare-release.go $CONTOUR_RELEASE_VERSION $KUBERNETES_MIN_VERSION $KUBERNETES_MAX_VERSION
Proofread the release notes and do any reordering, rewording, reformatting necessary, including editing or deleting the "Deprecation and Removal Notices" section.
Add the new release to the compatibility matrix (site/content/resources/compatibility-matrix.md).
Add the new release to the compatibility YAML (/versions.yaml). Be sure to mark this new version as supported and mark oldest currently supported version as no longer supported.
Update .github/workflows/trivy-scan.yaml to add new release branch and remove oldest listed (should always be 3 latest branches listed).
Commit all changes, push the branch, and PR it into main.
main, ensure it's up to date, and ensure you have a clean working directory.git checkout -b release-${CONTOUR_RELEASE_VERSION_MAJOR}.${CONTOUR_RELEASE_VERSION_MINOR}
github.com/projectcontour/contour:git push --set-upstream ${CONTOUR_UPSTREAM_REMOTE_NAME} release-${CONTOUR_RELEASE_VERSION_MAJOR}.${CONTOUR_RELEASE_VERSION_MINOR}
./hack/release/make-release-tag.sh main $CONTOUR_RELEASE_VERSION
github.com/projectcontour/contour:git push ${CONTOUR_UPSTREAM_REMOTE_NAME} release-${CONTOUR_RELEASE_VERSION_MAJOR}.${CONTOUR_RELEASE_VERSION_MINOR}
github.com/projectcontour/contour:git push ${CONTOUR_UPSTREAM_REMOTE_NAME} ${CONTOUR_RELEASE_VERSION}
Update the .github/dependabot.yml file to update the target branches for Dependabot scanning.
The latest minor (N) and two previous minors should be scanned (N-1 and N-2).
If the compatible Gateway API version has been bumped in this release, a conformance report should be reported upstream. Currently the process is manual but we have automated running the conformance suite and report generation in CI on release tags. Steps to submit a conformance report are:
Build and push a release GitHub Action workflow run for this release from heregateway-conformance-report artifact from the workflow run and unzipgateway-api repo with the content of the reportmain, ensure it's up to date, and ensure you have a clean working directory.main.netlify.toml to redirect Contour quickstart links to the new release branch.main.Now you have a tag pushed to Github, go to the release tab on github, select the tag and paste in the release notes that were generated previously.
A patch release is e.g. v1.11.1.
A patch release requires:
Set environment variables for use in subsequent steps:
export CONTOUR_RELEASE_VERSION=v1.11.1
export CONTOUR_RELEASE_VERSION_MAJOR=1
export CONTOUR_RELEASE_VERSION_MINOR=11
export CONTOUR_PREVIOUS_VERSION=v1.11.0
export CONTOUR_UPSTREAM_REMOTE_NAME=upstream
main to backport.release-${CONTOUR_RELEASE_VERSION_MAJOR}.${CONTOUR_RELEASE_VERSION_MINOR}), ensure it's up to date, and ensure you have a clean working directory.# repeat for each SHA
git cherry-pick <SHA>
main, ensure it's up to date, and ensure you have a clean working directory.main.changelogs/CHANGELOG-<version>.md./site/content/resources/compatibility-matrix.md)./versions.yaml).main.Check out the release branch, ensure it's up to date, and ensure you have a clean working directory.
Update the deployment YAML and create a local tag:
./hack/release/make-release-tag.sh $CONTOUR_PREVIOUS_VERSION $CONTOUR_RELEASE_VERSION
github.com/projectcontour/contour:git push ${CONTOUR_UPSTREAM_REMOTE_NAME} release-${CONTOUR_RELEASE_VERSION_MAJOR}.${CONTOUR_RELEASE_VERSION_MINOR}
github.com/projectcontour/contour:git push ${CONTOUR_UPSTREAM_REMOTE_NAME} ${CONTOUR_RELEASE_VERSION}
If the compatible Gateway API version has been bumped in this release, a conformance report should be reported upstream. Currently the process is manual but we have automated running the conformance suite and report generation in CI on release tags. Steps to submit a conformance report are:
Build and push a release GitHub Action workflow run for this release from heregateway-conformance-report artifact from the workflow run and unzipgateway-api repo with the content of the reportNow you have a tag pushed to Github, go to the release tab on github, select the tag and paste in the release notes that were generated previously.
An release-candidate release is e.g. v1.23.0-rc.1.
A release-candidate requires:
main for the release-candidateSet environment variables for use in subsequent steps:
export CONTOUR_RELEASE_VERSION=v1.23.0-rc.1
export CONTOUR_PREVIOUS_VERSION=v1.22.1
export KUBERNETES_MIN_VERSION=1.23
export KUBERNETES_MAX_VERSION=1.25
export CONTOUR_UPSTREAM_REMOTE_NAME=upstream
Typically we will branch off of main to cut an RC of an upcoming release and add the release tag on that branch.
This process is easier than managing a release-* branch and having to cherry-pick changes over from main for additional commits.
main is up to datemain (e.g. release-1.23.0-rc.1)github.com/projectcontour/contour.Ensure the RC branch you created above is clean and up to date.
Generate a changelog (the prepare-release.go script should detect the version is an RC and only generate a changelog):
go run ./hack/release/prepare-release.go $CONTOUR_RELEASE_VERSION $KUBERNETES_MIN_VERSION $KUBERNETES_MAX_VERSION
Proofread the release notes and do any reordering, rewording, reformatting necessary.
Commit all changes, push the branch to github.com/projectcontour/contour.
Check out the RC branch, ensure it's up to date, and ensure you have a clean working directory.
Update the deployment YAML and create a local tag:
./hack/release/make-release-tag.sh $CONTOUR_PREVIOUS_VERSION $CONTOUR_RELEASE_VERSION
Push the branch to github.com/projectcontour/contour (e.g. git push upstream release-1.23.0-rc.1).
Push the tag to github.com/projectcontour/contour:
git push ${CONTOUR_UPSTREAM_REMOTE_NAME} ${CONTOUR_RELEASE_VERSION}
Now you have a tag pushed to Github, go to the release tab on github, select the tag and paste in the release notes that were generated previously.
After any release, a few communications should be sent out to notify users.
If you encountered any problems or areas for improvement while executing the release, file issues before you forget.