The Gateway API project is an API project that has the following two components:
- Kubernetes Custom Resource Definitions (CRDs)
- Corresponding Go API in the form of
sigs.k8s.io/gateway-api
Go package
This repository is the home for both of the above components.
The versioning strategy for this project is covered in detail in the release documentation.
To simplify release notes generation, we recommend using the Kubernetes release notes generator:
go install k8s.io/release/cmd/release-notes@latest
export GITHUB_TOKEN=your_token_here
release-notes --start-sha EXAMPLE_COMMIT --end-sha EXAMPLE_COMMIT --branch main --repo gateway-api --org kubernetes-sigs
This output will likely need to be reorganized and cleaned up a bit, but it
provides a good starting point. Once you're satisfied with the changelog, create
a PR. This must go through the regular PR review process and get merged into the
main
branch. Approval of the PR indicates community consensus for a new
release.
The following steps must be done by one of the Gateway API maintainers:
- Create a new branch in your fork named something like
<githubuser>/release-x.x.x
. Use the new branch in the upcoming steps. - Use
git
to cherry-pick all relevant PRs into your branch. - Update
pkg/consts/consts.go
with the new semver tag and any updates to the API review URL. - Run the following command
BASE_REF=vmajor.minor.patch make generate
which will update generated docs with the correct version info. (Note that you can't test with these YAMLs yet as they contain references to elements which wont exist until the tag is cut and image is promoted to production registry.) - Create a pull request of the
<githubuser>/release-x.x.x
branch into therelease-x.x
branch upstream (which should already exist since this is a patch release). Add a hold on this PR waiting for at least one maintainer/codeowner to provide algtm
. - Verify the CI tests pass and merge the PR into
release-x.x
. - Create a tag using the
HEAD
of therelease-x.x
branch. This can be done using thegit
CLI or GitHub's release page. - Run the
make build-install-yaml
command which will generate install files in therelease/
directory. Attach these files to the GitHub release. - Update the
README.md
andsite-src/guides/index.md
files to point links and examples to the new release.
- Cut a
release-major.minor
branch that we can tag things in as needed. - Check out the
release-major.minor
release branch locally. - Update
pkg/consts/consts.go
with the new semver tag and any updates to the API review URL. - Run the following command
BASE_REF=vmajor.minor.patch make generate
which will update generated docs with the correct version info. (Note that you can't test with these YAMLs yet as they contain references to elements which wont exist until the tag is cut and image is promoted to production registry.) - Verify the CI tests pass before continuing.
- Create a tag using the
HEAD
of therelease-x.x
branch. This can be done using thegit
CLI or GitHub's release page. - Run the
make build-install-yaml
command which will generate install files in therelease/
directory. Attach these files to the GitHub release. - Update the
README.md
andsite-src/guides/index.md
files to point links and examples to the new release. - Update the implementation table path (
nav.Implementations.Comparison
) in the nav ofmkdocs.yml
to point to the latest release file (for example Implementation Comparison points toimplmenetation-table-v1.2.0.md
). Add the now past version underPast Version Comparisons
, and edit the text blurb inmkdocs-generate-conformance.py
to also reflect the added past version.
- Update
pkg/consts/consts.go
with the new semver tag (likev1.2.0-rc1
) and any updates to the API review URL. - Run the following command
make generate
which will update generated docs with the correct version info. (Note that you can't test with these YAMLs yet as they contain references to elements which wont exist until the tag is cut and image is promoted to production registry.) - Include the changelog update in this PR.
- Merge the update PR.
- Tag the release using the commit on
main
where the changelog update merged. This can be done using thegit
CLI or GitHub's release page. - Run the
make build-install-yaml
command which will generate install files in therelease/
directory. - Attach these files to the GitHub release.
Gateway API follows the standard kubernetes image promotion process described here.
- Once the tag has been cut and the image is available in the staging registry, identify the SHA-256 image digest of the image that you want to promote.
- Modify the
k8s-staging-gateway-api/images.yaml
file under kubernetes/k8s.io
repository and add the image digest along with the new tag under the correct
component.
- Currently, the following images are included:
admission-server
,echo-server
- Currently, the following images are included:
- Create a PR with the above changes.
- Image will get promoted by automated prow jobs once the PR merges