Skip to content

Release doc#136

Open
aniruddha2000 wants to merge 7 commits intomainfrom
release-doc
Open

Release doc#136
aniruddha2000 wants to merge 7 commits intomainfrom
release-doc

Conversation

@aniruddha2000
Copy link
Copy Markdown
Member

How to categorize this PR?

/kind enhancement
/kind documentation

What this PR does / why we need it:

This PR adds documentation for the release process for the machine-controller-manager-provider-stackit. Explaining, major, minor and patch releases and using our release tool.

Special notes for your reviewer:

Breaking changes:

@ske-prow ske-prow bot added the kind/enhancement Enhancement, improvement, extension label Mar 11, 2026
@ske-prow
Copy link
Copy Markdown

ske-prow bot commented Mar 11, 2026

@aniruddha2000: The label(s) kind/documentation cannot be applied, because the repository doesn't have them.

Details

In response to this:

How to categorize this PR?

/kind enhancement
/kind documentation

What this PR does / why we need it:

This PR adds documentation for the release process for the machine-controller-manager-provider-stackit. Explaining, major, minor and patch releases and using our release tool.

Special notes for your reviewer:

Breaking changes:

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@ske-prow ske-prow bot added the size/M Denotes a PR that changes 30-99 lines, ignoring generated files. label Mar 11, 2026
@dergeberl dergeberl requested a review from a team March 11, 2026 16:10
@ske-prow
Copy link
Copy Markdown

ske-prow bot commented Mar 16, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please ask for approval from dergeberl. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@aniruddha2000 aniruddha2000 requested a review from dergeberl March 30, 2026 09:52
Copy link
Copy Markdown
Member

@xoxys xoxys left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In general, we should follow the document structure from https://github.com/stackitcloud/cloud-provider-stackit/blob/main/docs/release-procedure.md e.g.

@ske-prow ske-prow bot assigned xoxys Mar 31, 2026
docs/releases.md Outdated
git checkout -b release-vx.y vx.y.0
git push -u origin release-vx.y
```
3. Use `/cherry-pick release-vx.y` command in the PR with the changes. The ronovate will open the cherry-pick PR automatically.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
3. Use `/cherry-pick release-vx.y` command in the PR with the changes. The ronovate will open the cherry-pick PR automatically.
3. Use `/cherry-pick release-vx.y` command in the PR with the changes. The prow will open the cherry-pick PR automatically.

@@ -1 +1 @@
# Release Procedure
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we keep the same structure of the file as in https://github.com/stackitcloud/cloud-provider-stackit/blob/main/docs/release-procedure.md

Example the Publishing a Release is on the other doc called Automated Release Process (Primary Method. Or Versioning -> General Information

@xoxys added this already as a comment: #136 (review)


### Hotfixes

A Hotfix is required when a critical bug or security vulnerability is discovered in a stable version that is currently in production, but the main branch has already moved forward with breaking changes or features not yet ready for release.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
A Hotfix is required when a critical bug or security vulnerability is discovered in a stable version that is currently in production, but the main branch has already moved forward with breaking changes or features not yet ready for release.
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.

commit id: "Critical Bugfix"
commit id: "Feature B"
checkout release-v1.0
commit id: "cherry-pick Bugfix" tag: "v1.0.1"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
commit id: "cherry-pick Bugfix" tag: "v1.0.1"
cherry-pick id: "Bugfix"
commit id: "v1.0.1" tag: "v1.0.1"

branch release-v1.0
checkout main
commit id: "Feature A"
commit id: "Breaking Change" tag: "v2.0.0-beta"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
commit id: "Breaking Change" tag: "v2.0.0-beta"
commit id: "Breaking Change"

We do not use beta releases.

Comment on lines +16 to +21
When releasing machine-controller-manager-provider-stackit, we follow semantic versioning (see https://semver.org/).

For major version changes, the configuration typically needs to be adapted to accommodate breaking changes before successfully upgrading. For minor and patch updates, no configuration adjustments are required.

Both major and minor releases are created from the main branch. Patch releases are created from a release branch that is based on a minor version release.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
When releasing machine-controller-manager-provider-stackit, we follow semantic versioning (see https://semver.org/).
For major version changes, the configuration typically needs to be adapted to accommodate breaking changes before successfully upgrading. For minor and patch updates, no configuration adjustments are required.
Both major and minor releases are created from the main branch. Patch releases are created from a release branch that is based on a minor version release.
- **Branching Strategy:** All major and minor releases are created from `main` branches. Patch releases are created from `release-v*` branches (see [Patch Release (Hotfix)](#patch-release-hotfix) for more details).
- **Versioning:** Versioning follows official [SemVer 2.0](https://semver.org/)
- **CI/CD System:** All release and image builds are managed by our **Prow CI** infrastructure.

Lets keep it the same as in cloud-provider-stackit as the information are the same.


> In the example above, the "Critical Bugfix" cannot be released via the main branch because main contains a "Breaking Change" that isn't ready for general availability. By using a release branch (release-v1.0), we can ship the fix as a patch (v1.0.1) immediately.

1. Create a Pull Request (PR) targeting the main branch. Once reviewed and merged, identify the PR number.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. Create a Pull Request (PR) targeting the main branch. Once reviewed and merged, identify the PR number.
1. Create a Pull Request with the bug fix targeting the main branch.
2. Review and merge the `main` branch Pull Request.

git checkout -b release-vx.y vx.y.0
git push -u origin release-vx.y
```
3. Use `/cherry-pick release-vx.y` command in the PR with the changes. The prow will open the cherry-pick PR automatically.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
3. Use `/cherry-pick release-vx.y` command in the PR with the changes. The prow will open the cherry-pick PR automatically.
4. Use `/cherry-pick release-vx.y` command in the `main` branch Pull Request. The prow will open the cherry-pick Pull Request against `release-vx.y` branch automatically.

git push -u origin release-vx.y
```
3. Use `/cherry-pick release-vx.y` command in the PR with the changes. The prow will open the cherry-pick PR automatically.
4. Once the cherry-pick PR has been reviewed, approved, and merged, you can promote the changes by creating a new patch release of machine-controller-manager-provider-stackit.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
4. Once the cherry-pick PR has been reviewed, approved, and merged, you can promote the changes by creating a new patch release of machine-controller-manager-provider-stackit.
5. Once the cherry-pick PR has been reviewed, approved, and merged, you can promote the changes by creating a new patch release of machine-controller-manager-provider-stackit.

```
3. Use `/cherry-pick release-vx.y` command in the PR with the changes. The prow will open the cherry-pick PR automatically.
4. Once the cherry-pick PR has been reviewed, approved, and merged, you can promote the changes by creating a new patch release of machine-controller-manager-provider-stackit.
For this, publish the draft release on the `release-vx.y` branch for the next patch version (`vx.y.z`) (see [Publishing a Release](#-publishing-a-release)).
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
For this, publish the draft release on the `release-vx.y` branch for the next patch version (`vx.y.z`) (see [Publishing a Release](#-publishing-a-release)).
For this, publish the draft release on the `release-vx.y` branch for the next patch version (`vx.y.z`) (see [Automated Release Process (Primary Method)](#automated-release-process-primary-method)).

Comment on lines +58 to +68
When changes are merged into `main` or a `release-v*` branch, the `release-tool` creates a draft release to preview the upcoming updates.
The tool automatically determines the appropriate version tag based on the target branch and the labels of the merged Pull Requests:

1. **Draft Creation:** On every successful merge (post-submit) to the `main` branch, a Prow job automatically runs the `release-tool`. This tool creates a new draft release on GitHub or updates the existing one with a changelog generated from recent commits.
2. **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.
To publish a release, follow these steps:

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.
1. Open the repository's releases page.
2. Navigate to the corresponding draft release (minor/major for `main`, patch for `release-v*`).
3. Review to-be-released changes by checking the release notes.
4. Edit the release by pressing the pen icon.
5. Change `REPLACE_ME` with your github username.
6. Press the "Publish release" button.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
When changes are merged into `main` or a `release-v*` branch, the `release-tool` creates a draft release to preview the upcoming updates.
The tool automatically determines the appropriate version tag based on the target branch and the labels of the merged Pull Requests:
1. **Draft Creation:** On every successful merge (post-submit) to the `main` branch, a Prow job automatically runs the `release-tool`. This tool creates a new draft release on GitHub or updates the existing one with a changelog generated from recent commits.
2. **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.
To publish a release, follow these steps:
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.
1. Open the repository's releases page.
2. Navigate to the corresponding draft release (minor/major for `main`, patch for `release-v*`).
3. Review to-be-released changes by checking the release notes.
4. Edit the release by pressing the pen icon.
5. Change `REPLACE_ME` with your github username.
6. Press the "Publish release" button.
The primary release method is automated using a tool called `release-tool`. This process is designed to be straightforward and require minimal manual intervention.
1. **Draft Creation:** On every successful merge (post-submit) to the `main` branch and `release-v*` branchs, a Prow job automatically runs the `release-tool`. This tool creates a new draft release on GitHub or updates the existing one with a changelog generated from recent commits.
2. **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.

The information in the same so lets keep it like in cloud-provider-stackit

checkout main
commit id: "Feature A"
commit id: "Breaking Change" tag: "v2.0.0-beta"
commit id: "Critical Bugfix"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
commit id: "Critical Bugfix"
commit id: "Bugfix"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/enhancement Enhancement, improvement, extension size/M Denotes a PR that changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants