- A container image of the
cluster-api-provider-openstack
controller manager
- The container image is found in the registry
us.gcr.io/k8s-artifacts-prod/capi-openstack/
with an image name ofcapi-openstack-controller
and a tag that matches the release version. For example, in thev0.2.0
release, the container image location isus.gcr.io/k8s-artifacts-prod/capi-openstack/capi-openstack-controller:v0.2.0
- Make sure your repo is clean by git's standards.
- Make sure you are on the correct branch (
master
for the current release andrelease-0.x
for older releases). - Set an environment variable with the version, e.g.:
VERSION=v0.4.0
- Create an annotated tag
git tag -s -a $VERSION -m $VERSION
.
- Push the tag to the GitHub repository:
NOTE:
upstream
should be the name of the remote pointing togithub.com/kubernetes-sigs/cluster-api-provider-openstack
git push upstream $VERSION
- Run
make release
to build artifacts (the image is automatically built by CI) - Follow the image promotion process to promote the image from the staging repo to
k8s.gcr.io/capi-openstack
. The staging repository can be inspected at https://console.cloud.google.com/gcr/images/k8s-staging-capi-openstack/GLOBAL. Be sure to choose the top levelcapi-openstack-controller
, which will provide the multi-arch manifest, rather than one for a specific architecture. The image build logs are available at Cloud Build. Add the new sha=>tag mapping to the images.yaml (use the sha of the image with the corresponding tag) - Create a draft release in GitHub based on the tag created above
- Generate and finalize the release notes and add them to the draft release:
- Run
make release-notes
to gather changes since the last revision. If you need to specify a specific tag to look for changes since, usemake release-notes RELEASE_NOTES_ARGS="--from <tag>"
. - Pay close attention to the
## :question: Sort these by hand
section, as it contains items that need to be manually sorted.
- Run
- Attach the following files to the draft release:
./out/infrastructure-components.yaml
./out/cluster-template.yaml
./out/cluster-template-external-cloud-provider.yaml
./out/cluster-template-without-lb.yaml
./out/metadata.yaml
- Publish release. Use the pre-release option for release candidate or beta versions.
Releasing requires a particular set of permissions.
- Approver role for the image promoter process (kubernetes/k8s.io/blob/main/k8s.gcr.io/images/k8s-staging-capi-openstack/OWNERS)
- Tag push and release creation rights to the GitHub repository (team
cluster-api-provider-openstack-maintainers
in kubernetes/org/config/kubernetes-sigs/sig-cluster-lifecycle/teams.yaml)
There is a post-submit Prow job running after each commit on master which pushes a new image to the staging repo (gcr.io/k8s-staging-capi-openstack/capi-openstack-controller:latest
). Following configuration is involved:
- staging gcr bucket: kubernetes/k8s.io/blob/main/k8s.gcr.io/manifests/k8s-staging-capi-openstack/promoter-manifest.yaml
- post-submit
post-capi-openstack-push-images
Prow job: kubernetes/test-infra/blob/master/config/jobs/image-pushing/k8s-staging-cluster-api.yaml) (corresponding dashboard is located at https://testgrid.k8s.io/sig-cluster-lifecycle-image-pushes#post-capi-openstack-push-images) - Google Cloud Build configuration which is used by the Prow job: kubernetes-sigs/cluster-api-provider-openstack/cloudbuild.yaml