- Overview
- General Information
- Patch Version (Hotfix)
- Automated Release Process (Primary Method)
- Manual Release Process (Fallback Method)
This document outlines the standard procedure for creating new releases of the STACKIT gardener-extension-provider-stackit.
- Branching Strategy: All major and minor releases are created from
mainbranches. Patch releases are created fromrelease-v*branches (see Patch Release (Hotfix) for more details). - Versioning: Versioning follows official SemVer 2.0
- CI/CD System: All release and image builds are managed by our Prow CI infrastructure.
A Hotfix is required when a critical bug or security vulnerability is discovered in a stable version that is currently in use, but the main branch has already moved forward with breaking changes or features.
We follow a "Fix-First-in-Main" policy. All fixes must be merged into the main branch before being cherry-picked into a specific release branch.
For example:
gitGraph:
commit id: "v1.0.0" tag: "v1.0.0"
branch release-v1.0
checkout main
commit id: "Feature A"
commit id: "Breaking Change"
commit id: "Bugfix"
checkout release-v1.0
cherry-pick id: "Bugfix"
commit id: "v1.0.1" tag: "v1.0.1"
As shown in the example, the
Critical Bugfixcannot be released directly from main because that branch already contains unreleased work (likeFeature Aor theBreaking Change) that shouldn't be shipped alongside a patch. Isolating the fix onrelease-v1.0ensures we release only theCritical Bugfixin the patch release (v1.0.1).
- Create a Pull Request with the bug fix targeting the main branch.
- Review and merge the
mainbranch Pull Request. - If a branch for your specific minor version (e.g.,
release-v1.0) doesn't exist yet, create it from the corresponding tag:git fetch --all --tags git checkout -b release-vx.y vx.y.0 git push -u origin release-vx.y
- Use
/cherry-pick release-vx.ycommand in themainbranch Pull Request. The prow will open the cherry-pick Pull Request againstrelease-vx.ybranch automatically. - Once the cherry-pick PR has been reviewed, approved, and merged, you can promote the changes by creating a new patch release of gardener-extension-provider-stackit.
For this, publish the draft release on the
release-vx.ybranch for the next patch version (vx.y.z) (see Automated Release Process (Primary Method)).
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 the
mainbranch andrelease-v*branchs, 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, replace the placeholder with your GitHub handle and publish it by clicking the "Publish release" button.
Publishing the release automatically creates the corresponding Git tag (e.g., v1.3.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 target branch/commit, 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.