This document outlines the release process for NGINX Kubernetes Gateway (NKG).
NKG uses semantic versioning for its releases. For more information, see https://semver.org.
Major version zero
(0.Y.Z)
is reserved for development, anything MAY change at any time. The public API is not stable.
The features that will go into the next release are reflected in the corresponding milestone. Refer to the Issue Lifecycle document for information on issues creation and assignment to releases.
Note: in the instructions below, X
stands for the major version, Y
-- minor, Z
-- patch.
A Major or minor introduces new features.
To create a new release, follow these steps:
- Create an issue to define and track release-related activities. Choose a title that follows the
format
Release X.Y.Z
. - Stop merging any new work into the main branch.
- Test the main branch for release-readiness. For that, use the
edge
containers, which are built from the main branch. - If a problem is found, prepare a fix PR, merge it into the main branch and return to the previous step.
- Create a release branch with a name that follows the
release-X.Y
format. - Prepare and merge a PR into the release branch to update the repo files for the release:
- Update the tag of NKG container images used in the installation manifests and docs to
X.Y.Z
. - Ensure that the
imagePullPolicy
isIfNotPresent
in the installation manifests. - Modify any
git clone
instructions to usevX.Y.Z
tag. - Adjust the
VERSION
variable in the Makefile toX.Y.Z
. - Update the README to include information about the release.
- Update the changelog. The changelog includes only important (from the user perspective) changes to NKG. This is in contrast with the autogenerated full changelog, which is created in the next step. Use the previous changelog entries for formatting and content guidance.
- Update the tag of NKG container images used in the installation manifests and docs to
- Create and push the release tag in the format
vX.Y.Z
. As a result, the CI/CD pipeline will:- Build NKG container images with the release tag
X.Y.Z
and push it to the registry. - Create a GitHub release with an autogenerated changelog and attached release artifacts.
- Build NKG container images with the release tag
- Prepare and merge a PR into the main branch to update the README to include the information about the latest release and also the changelog.
- Close the issue created in Step 1.
A patch release is for an important fix that cannot wait the next major/minor release.
To create a new release, follow these steps:
- Create an issue to define and track release-related activities. Choose a title that follows the
format
Release X.Y.Z
. - If the fix applies to both the latest release and the main branch, then:
- Prepare and merge a fix PR into the in the main branch.
- Prepare and merge a fix PR (with a cherry-pick commit) into the existing release branch.
- Alternatively, if the fix only applies to the latest release, prepare and merge a fix PR into the existing release branch.
- Test the release branch for release-readiness.
- If a problem is found, return to Step 2.
- Follow Steps 6-9 from the Major or Minor Release section.