diff --git a/RELEASE.md b/RELEASE.md index 6395d3d02..0cd9d5b75 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -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 `kubernetes-dev@googlegroups.com` 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 `kubernetes-dev@googlegroups.com` with the subject `[ANNOUNCE] cluster-api-provider-ibmcloud $VERSION is released` diff --git a/docs/book/src/developer/release.md b/docs/book/src/developer/release.md index e3603b2e8..bdd7d4977 100644 --- a/docs/book/src/developer/release.md +++ b/docs/book/src/developer/release.md @@ -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 git@github.com: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