Release Process
Alpha/Beta releases
- Create a tag and push
git clone git@github.com:kubernetes-sigs/cluster-api-provider-ibmcloud.git git tag -s -m "v0.2.0-alpha.3" v0.2.0-alpha.3 git push origin v0.2.0-alpha.3
- Wait for the google cloud build to be finished
- Prepare release notes
- Create a draft release with release notes for the tag
- Tick the prerelease checkbox
- Download the artifacts once cloud build is finished
gsutil -m cp \ "gs://artifacts.k8s-staging-capi-ibmcloud.appspot.com/components/v0.2.0-alpha.3/cluster-template-powervs.yaml" \ "gs://artifacts.k8s-staging-capi-ibmcloud.appspot.com/components/v0.2.0-alpha.3/cluster-template.yaml" \ "gs://artifacts.k8s-staging-capi-ibmcloud.appspot.com/components/v0.2.0-alpha.3/infrastructure-components.yaml" \ "gs://artifacts.k8s-staging-capi-ibmcloud.appspot.com/components/v0.2.0-alpha.3/metadata.yaml" \ .
- Upload the downloaded artifacts into the release asset
- Publish the drafted release
Note: In the above instructions,
v0.2.0-alpha.3
is the version/tag is being released
GA Releases
- Create a tag and push
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
- Create a draft release with release notes for the tag
- Perform the image promotion process:
- Clone and pull down the latest from kubernetes/k8s.io
- Create a new branch in your fork of
kubernetes/k8s.io
. - The staging repository is here.
- Once image is present in the above staging repository, find the sha256 tag for the image by following instructions
$ manifest-tool inspect --raw gcr.io/k8s-staging-capi-ibmcloud/cluster-api-ibmcloud-controller:v0.1.0 | jq '.[0].Digest' "sha256:6c92a6a337ca5152eda855ac27c9e4ca1f30bba0aa4de5c3a0b937270ead4363"
- In your
kubernetes/k8s.io
branch editk8s.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 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
Note: In the above instructions,
v0.1.0
is the version/tag is being released
Prepare release notes
-
If you don’t have a GitHub token, create one by going to your GitHub settings, in Personal access tokens. Make sure you give the token the
repo
scope. -
Fetch the latest changes from upstream and check out the
main
branch:git fetch upstream git checkout main
-
Generate release notes by running the following commands on the
main
branch:export GITHUB_TOKEN=<your GH token> export RELEASE_TAG=v1.2.3 # change this to the tag of the release to be cut make release-notes
-
Review the release notes file generated at
CHANGELOG/<RELEASE_TAG>.md
and make any necessary changes:
- Move items out of “Uncategorized” into an appropriate section.
- Change anything attributed to “k8s-cherrypick-robot” to credit the original author.
- Fix any typos or other errors.
- Add the following section with a link to the full diff:
Be sure to replace the versions in the URL with the appropriate tags.## The image for this release is: registry.k8s.io/capi-ibmcloud/cluster-api-ibmcloud-controller:<RELEASE_TAG> <!-- markdown-link-check-disable-next-line --> Full Changelog: https://github.com/kubernetes-sigs/cluster-api-provider-ibmcloud/compare/v0.9.0...v0.10.0