- Overview
- General Information
- Automated Release Process (Primary Method)
- Manual Release Process (Fallback Method)
This document outlines the standard procedure for creating new releases of the Cloud Provider STACKIT. Cloud Provider releases are synchronized with kubernetes/kubernetes releases. Minor versions may be released as needed for critical bug fixes.
- Branching Strategy: All releases are created from
release-*branches, which are tied to specific Kubernetes minor versions. For example, all Cloud Provider releases compatible with Kubernetesv1.33are cut from therelease-v1.33branch. - Versioning: Cloud Provider versioning follows the format
vMAJOR.MINOR.PATCH(e.g.,v1.33.0,v1.33.1), where:MAJOR.MINORmatches the Kubernetes version from the release branchPATCHis incremented for each subsequent release within the same Kubernetes version
- CI/CD System: All release and image builds are managed by our Prow CI infrastructure.
The primary release method is automated using a tool called release-tool. This process is designed to be straightforward and require minimal manual intervention.
- Draft Creation: On every successful merge (post-submit) to a
release-*branch, a Prow job automatically runs therelease-tool. This tool creates a new draft release on GitHub or updates the existing one with a changelog generated from recent commits. - Publishing the Release: When the draft is ready, navigate to the repository's "Releases" page on GitHub. Locate the draft, review the changelog, and publish it by clicking the "Publish release" button.
Publishing the release automatically creates the corresponding Git tag (e.g., v1.33.1), which triggers a separate Prow job to build the final container images and attach them to the GitHub release.
If the release-tool or its associated Prow job fails, use the GitHub web UI to create and publish a release:
-
Go to the repository on GitHub and click Releases on the right side, then click Draft new release.
-
Open the Select tag dropdown and choose Create new tag at the bottom. Enter the new tag name (for example
v2.1.0) and pick the correctrelease-as target branch, then confirm. -
Click Generate release notes to let GitHub populate the changelog.
-
In the release description, add a line
Released by @<your github handle>to indicate the publisher. -
Click Publish release to create the release.
Publishing a new release triggers the same Prow release job that builds and publishes the final container images.
- Create a new version of the
cloud-providerfork. - Create a new release branch
ske-v0.xxfrom the latest patch version tag of the desired Kubernetes version. - Cherry-pick our changes into the release branch. Example: https://github.com/stackitcloud/cloud-provider/commits/ske-v0.35/
- Tag the release branch with
v0.xx.x-ske-x. - Bump the Kubernetes packages, including an overwrite of the
cloud-providerfork, in themainbranch. - Create a new release branch
release-v1.XXfrommain. - Update the Renovate configuration via a PR against
main: add the new release branch tobaseBranchPatternsand add a new rule inpackageRulesfor/^k8s.io/. Cherry-pick this PR to all maintained release branches. Example PR: #756 - Create a manual release for the new branch (note: the release tool will only work if there is already a tag on the branch). Do not generate release notes as they will contain many unrelated changes. Just add
Initial release of v1.xx.0as release notes.