- Git
v2
- A
GITHUB_TOKEN
withrepo:write
permissions
The vast majority of the release process is automated via the release.yaml
Github Actions workflow, a maintainer only needs to perform a couple steps.
Release tags are based on Semantic Versioning (semver).
The CHANGELOG.md
file should include any breaking or backwards incompatible changes since the last release.
If there are any breaking changes the upcoming release must increment the MAJOR
version.
CAVEAT: during the v0.x.x
release cycle breaking changes need only update the MINOR
release version, after v1
this changes.
Edit the CHANGELOG.md
file and add the release or modify the release as needed. Ensure the new TAG
is represented there and use previous tags as a guide.
Make a commit directly to main
with a message following this pattern:
$ git commit -m 'docs: update CHANGELOG.md for release vX.X.X' CHANGELOG.md
Where vX.X.X
is the release tag you'll be making.
Given the vX.X.X
tag from above (which should not yet have been made) you can trigger release testing and creation of the tag with the following:
$ GITHUB_TOKEN=<YOUR_TOKEN> GITHUB_ORG=kong GITHUB_REPO=kubernetes-testing-framework go run internal/ci/workflows/main.go release-testing.yaml main vX.X.X
The above will start a workflow that runs the release tests, when they succeed the workflow will create the vX.X.X
tag and then you can complete the release.
NOTE: sometimes the release tests fail for one reason or another and you may need to make some additional patches, in that case the above command can be run multiple times until the release testing succeeds and the tag is pushed.
NOTE: if you want to see the documentation for the above script run go doc internal/ci/workflows/main.go
Once the above release testing has succeeded and pushed your tag, you may trigger the final release:
$ GITHUB_TOKEN=<YOUR_TOKEN> GITHUB_ORG=kong GITHUB_REPO=kubernetes-testing-framework go run internal/ci/workflows/main.go release.yaml vX.X.X
The resulting workflow will create the final Github Release and will build and publish the release artifacts for it, and the release is complete.