You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**Note:** You may encounter an ioctl error during tagging. To resolve this, you need to set the GPG_TTY environment variable as `export GPG_TTY=$(tty)`.
28
52
29
-
This will trigger a [release GitHub action](https://github.com/kubernetes-sigs/cluster-api-operator/blob/main/.github/workflows/release.yaml) that creates a release with operator components and the Helm chart. Concurrently, a Prow job will start to publish operator images to the staging registry.
53
+
This will trigger a [release GitHub action](https://github.com/kubernetes-sigs/cluster-api-operator/actions/workflows/release.yaml) that creates a release with operator components and the Helm chart. Concurrently, a Prow job will start to publish operator images to the staging registry.
30
54
31
-
2. Wait for the images to appear in the [staging registry](https://console.cloud.google.com/gcr/images/k8s-staging-capi-operator/global/cluster-api-operator).
55
+
4. Wait until images for the tag have been built and pushed to the [staging registry](https://console.cloud.google.com/gcr/images/k8s-staging-capi-operator/global/cluster-api-operator) by the [post push images job](https://prow.k8s.io/?repo=kubernetes-sigs%2Fcluster-api-operator&job=post-cluster-api-operator-push-images).
32
56
33
-
3. Create a GitHub [Personal access token](https://github.com/settings/tokens) if you don't already have one. We're going to use this for opening a PR to promote the images from staging to production.
57
+
5. If you don't have a GitHub token, create one by navigating to your GitHub settings, in [Personal access token](https://github.com/settings/tokens). Make sure you give the token the `repo` scope.
58
+
59
+
6. Create a PR to promote the images to the production registry:
34
60
35
61
```bash
62
+
# Export the tag of the release to be cut, e.g.:
36
63
export GITHUB_TOKEN=<your GH token>
37
64
export USER_FORK=<your GH account name>
38
65
make promote-images
39
66
```
40
67
41
-
After it has been tested, merge the PR and verify that the image is present in the production registry.
68
+
**Notes**:
69
+
* `make promote-images` target tries to figure out your Github user handle in order to find the forked [k8s.io](https://github.com/kubernetes/k8s.io) repository.
70
+
If you have not forked the repo, please do it before running the Makefile target.
71
+
* `kpromo` uses `[email protected]:...` as remote to push the branch for the PR. If you don't have `ssh`set up you can configure
72
+
git to use `https` instead via `git config --global url."https://github.com/".insteadOf [email protected]:`.
73
+
* This will automatically create a PR in [k8s.io](https://github.com/kubernetes/k8s.io) and assign the CAPI Operator maintainers.
74
+
75
+
76
+
7. Merge the PR (/lgtm + /hold cancel) and verify the images are available in the production registry:
77
+
* Wait for the [promotion prow job](https://prow.k8s.io/?repo=kubernetes%2Fk8s.io&job=post-k8sio-image-promo) to complete successfully. Then test the production image is accessible:
4. Switch back to the main branch and update `index.yaml` and `clusterctl-operator.yaml`. These are the sources for the operator Helm chart repository and the local krew plugin manifest index, respectively.
83
+
8. Publish the release in GitHub:
84
+
85
+
* The draft release should be automatically created via the [release GitHub Action](https://github.com/kubernetes-sigs/cluster-api-operator/actions/workflows/release.yaml). Make sure that release is flagged as `pre-release`forall `beta` and `rc` releases or `latest` for a new releasein the most recent release branch.
86
+
87
+
:tada: CONGRATULATIONS! The new [release](https://github.com/kubernetes-sigs/cluster-api-operator/releases) of CAPI Operator should be live now!!! :tada:
88
+
89
+
Please proceed to mandatory post release steps [next](#post-release-steps).
90
+
91
+
## Post-release steps
92
+
93
+
1. Switch back to the main branch and update `index.yaml` and `clusterctl-operator.yaml`. These are the sources for the operator Helm chart repository and the local krew plugin manifest index, respectively.
48
94
49
95
```bash
50
96
git checkout main
51
97
make update-helm-plugin-repo
52
98
```
53
99
54
-
5. Create a PR with the changes.
100
+
2. Once run successfully, it will automatically create a PR againt the operator repository with all the needed changes.
55
101
56
-
6. In case this is a minor or major version release, update `test-infra` jobs for the new `release-x.x` branch. This will require updating dashboard pointer to use updated presubmit spec per the detailed [description](#setup-jobs-and-dashboards-for-a-new-release-branch).
102
+
3. Depending on whether you are cutting a minor/major or patch release, next steps might be needed or redundant. Please follow along the next [chapter](#setup-jobs-and-dashboards-for-a-new-release-branch), in case this is a minor or major version release.
57
103
58
104
## Setup jobs and dashboards for a new release branch
59
-
105
+
60
106
The goal of this task is to have test coverage forthe new release branch and resultsin testgrid.
61
-
We are currently running CI jobs only in main and latest stable release branch (i.e release-0.5 will be used as an example below) and all configurations are hosted in test-infra [repo](https://github.com/kubernetes/test-infra).
107
+
We are currently running CI jobs only in main and latest stable release branch (i.e release-0.14 is last minor release branch we created in earlier steps) and all configurations are hosted in test-infra [repository](https://github.com/kubernetes/test-infra). In this example, we will update `test-infra` repository jobs to track the new `release-0.14` branch.
62
108
63
109
1. Create new jobs based on the jobs running against our `main` branch:
64
-
1.Copy`test-infra/config/jobs/kubernetes-sigs/cluster-api-operator/cluster-api-operator-periodics-main.yaml` to `test-infra/config/jobs/kubernetes-sigs/cluster-api-operator/cluster-api-operator-periodics-release-0-5.yaml`.
65
-
2.Copy`test-infra/config/jobs/kubernetes-sigs/cluster-api-operator/cluster-api-operator-presubmits-main.yaml` to `test-infra/config/jobs/kubernetes-sigs/cluster-api-operator/cluster-api-operator-presubmits-release-0-5.yaml`.
110
+
1. Rename`test-infra/config/jobs/kubernetes-sigs/cluster-api-operator/cluster-api-operator-periodics-release-0-13.yaml` to `test-infra/config/jobs/kubernetes-sigs/cluster-api-operator/cluster-api-operator-periodics-release-0-14.yaml`.
111
+
2. Rename`test-infra/config/jobs/kubernetes-sigs/cluster-api-operator/cluster-api-operator-presubmits-release-0-13.yaml` to `test-infra/config/jobs/kubernetes-sigs/cluster-api-operator/cluster-api-operator-presubmits-release-0-14.yaml`.
66
112
3. Modify the following:
67
-
1. Rename the jobs, e.g.: `periodic-cluster-api-operator-test-main` => `periodic-cluster-api-operator-test-release-0-5`.
68
-
2. Change `annotations.testgrid-dashboards` to `sig-cluster-lifecycle-cluster-api-operator-0.5`.
69
-
3. Change `annotations.testgrid-tab-name`, e.g. `capi-operator-test-main` => `capi-operator-test-release-0-5`.
113
+
1. Rename the jobs, e.g.: `periodic-cluster-api-operator-test-release-0-13` =>`periodic-cluster-api-operator-test-release-0-14`.
114
+
2. Change `annotations.testgrid-dashboards` to `sig-cluster-lifecycle-cluster-api-operator-0.14`.
115
+
3. Change `annotations.testgrid-tab-name`, e.g. `capi-operator-test-release-0-13` =>`capi-operator-test-release-0-14`.
70
116
4. For periodics additionally:
71
-
* Change `extra_refs[].base_ref` to `release-0.5` (for repo: `cluster-api-operator`).
72
-
5. For presubmits additionally: Adjust branches: `^main$` => `^release-0.5$`.
117
+
* Change `extra_refs[].base_ref` to `release-0.14` (for repo: `cluster-api-operator`).
118
+
5. For presubmits additionally: Adjust branches: `^release-0.13$` =>`^release-0.14$`.
73
119
2. Create a new dashboard for the new branch in: `test-infra/config/testgrids/kubernetes/sig-cluster-lifecycle/config.yaml` (`dashboard_groups` and `dashboards`).
74
-
* Add a new entry `sig-cluster-lifecycle-cluster-api-operator-0.5` in both `dashboard_groups` and `dashboards` lists.
75
-
3. Remove tests for previous release branch.
76
-
* For example, let's assume we just created tests for v0.5, then we can now drop test coverage for the release-0.4 branch.
77
-
4. Verify the jobs and dashboards a day later by taking a look at: `https://testgrid.k8s.io/sig-cluster-lifecycle-cluster-api-operator-0.5`.
120
+
* Modify a previous job entry: `sig-cluster-lifecycle-cluster-api-operator-0.13` =>`sig-cluster-lifecycle-cluster-api-operator-0.14`in both `dashboard_groups` and `dashboards` lists.
121
+
3. Verify the jobs and dashboards a day later by taking a look at: `https://testgrid.k8s.io/sig-cluster-lifecycle-cluster-api-operator-0.14`.
0 commit comments