Skip to content

Update documentation for release process #2223

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 22, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
The Kubernetes cluster-api-provider-ibmcloud is released on an as-needed basis. The process is as follows:

1. An issue is proposing a new release with a changelog since the last release
1. All [OWNERS](OWNERS) must LGTM this release
1. An OWNER runs `git tag -s $VERSION` and inserts the changelog and pushes the tag with `git push $VERSION`
1. The release issue is closed
1. An announcement email is sent to `[email protected]` with the subject `[ANNOUNCE] cluster-api-provider-ibmcloud $VERSION is released`
2. All [OWNERS](OWNERS) must LGTM this release
3. An OWNER runs `git tag -s $VERSION` and inserts the changelog and pushes the tag with `git push $VERSION`
4. The release issue is closed
5. An announcement email is sent to `[email protected]` with the subject `[ANNOUNCE] cluster-api-provider-ibmcloud $VERSION is released`
27 changes: 16 additions & 11 deletions docs/book/src/developer/release.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,30 +25,35 @@
> Note: In the above instructions, `v0.2.0-alpha.3` is the version/tag is being released

## GA Releases
- Create a tag and push
- Review if all issues linked to the release version are either completed or moved to the "Next" release.
- Create a release branch from main.
- Clone the repository and create a tag (release tag) and push to origin. Ensure that the GPG keys are set.
```shell
git clone [email protected]:kubernetes-sigs/cluster-api-provider-ibmcloud.git
git tag -s -m "v0.1.0" v0.1.0
git push origin v0.1.0
```
- Wait for the google cloud build to be finished
- [Prepare release notes](#prepare-release-notes)
- Create a draft release with release notes for the tag
- Perform the [image promotion process](https://github.com/kubernetes/k8s.io/tree/main/k8s.gcr.io#image-promoter):
- Wait for the Google Cloudbuild to finish, which is triggered once the tag is created.
- The status of the build jobs can be tracked from: [https://prow.k8s.io/?job=post-cluster-api-provider-ibmcloud-push-images](https://prow.k8s.io/?job=post-cluster-api-provider-ibmcloud-push-images)
- The built images are available here: [https://console.cloud.google.com/gcr/images/k8s-staging-capi-ibmcloud](https://console.cloud.google.com/gcr/images/k8s-staging-capi-ibmcloud)
- Create a draft release with release notes for the created tag.
- Use the `make release-notes` target to generate release notes. (Refer topic - [Prepare release notes](https://github.com/kubernetes-sigs/cluster-api-provider-ibmcloud/blob/main/docs/book/src/developer/release.md#prepare-release-notes))
- Update the controller image version towards the bottom of the release document.
- Perform the [image promotion process](https://github.com/kubernetes/k8s.io/tree/main/registry.k8s.io#image-promoter):
- Clone and pull down the latest from [kubernetes/k8s.io](https://github.com/kubernetes/k8s.io)
- Create a new branch in your fork of `kubernetes/k8s.io`.
- The staging repository is [here](https://console.cloud.google.com/gcr/images/k8s-staging-capi-ibmcloud/GLOBAL).
- Once image is present in the above staging repository, find the sha256 tag for the image by following instructions
```shell
$ manifest-tool inspect --raw gcr.io/k8s-staging-capi-ibmcloud/cluster-api-ibmcloud-controller:v0.1.0 | jq '.[0].Digest'
$ manifest-tool inspect --raw gcr.io/k8s-staging-capi-ibmcloud/cluster-api-ibmcloud-controller:v0.1.0 | jq '.digest'
"sha256:6c92a6a337ca5152eda855ac27c9e4ca1f30bba0aa4de5c3a0b937270ead4363"
```
- In your `kubernetes/k8s.io` branch edit `k8s.gcr.io/images/k8s-staging-capi-ibmcloud/images.yaml` and add an entry for the version using the sha256 value got from the above command. For example: `"sha256:6c92a6a337ca5152eda855ac27c9e4ca1f30bba0aa4de5c3a0b937270ead4363": ["v0.1.0"]`
- You can use [this PR](https://github.com/kubernetes/k8s.io/pull/3185) as example
- Wait for the PR to be approved and merged
- Run `make release` command
- Copy the content from `out` directory to release asset
- Publish the drafted release
- You can use [this PR](https://github.com/kubernetes/k8s.io/pull/7780) as example.
- Wait for the PR to be approved and merged.
- This should trigger a build job to build artifacts through cloud-build / run `make release` on the release branch.
- Upload the binaries/files that are uploaded to Google Cloud Storage / built locally and publish the drafted release.
- Create an alpha tag for the `release-version+1` for allowing subsequent commits.

> Note: In the above instructions, `v0.1.0` is the version/tag is being released

Expand Down