|
1 |
| -# Release Process |
2 |
| - |
3 |
| -The IBM PowerVS Block CSI Driver is released on an as-needed basis. The process is as follows: |
4 |
| - |
5 |
| -1. An issue is proposing a new release with a changelog since the last release |
6 |
| -2. All [OWNERS](OWNERS) must LGTM this release |
7 |
| -3. An OWNER runs `git tag -s $VERSION` and inserts the changelog and pushes the tag with `git push $VERSION` |
8 |
| -4. The release issue is closed |
9 |
| -5. An announcement email is sent to `[email protected]` with the subject `[ANNOUNCE] ibm-powervs-block-csi-driver $VERSION is released` |
10 |
| -6. A new release will be cut when there are new releases in the following packages: `kubernetes, go, go builder, container-storage-interface, side cars` |
11 |
| -7. A new patch release will be cut when there are minor package updates |
12 |
| -8. A new release will be cut with new features |
| 1 | +# IBM PowerVS Block CSI Driver Release Process |
| 2 | + |
| 3 | +## Choose the release version and release branch |
| 4 | + |
| 5 | +1. Find the [latest release](https://github.com/kubernetes-sigs/ibm-powervs-block-csi-driver/releases/latest). For example, `v3.5.0`. |
| 6 | +1. Increment the version according to semantic versioning https://semver.org/. For example, `v3.5.1` for bug fixes or updated images, `v3.6.0` for minor changes, `v4.0.0` for major changes. |
| 7 | +1. Find or create the corresponding release branch that corresponds to a minor version. For example, for `v3.5.1` the release branch would be `release-3.5` and it would already exist. For `v3.6.0` it would be `release-3.6` and the branch would need to be created. If you do not have permission to create the branch, ask [OWNERS](OWNERS). |
| 8 | + |
| 9 | +## Create the release commit |
| 10 | + |
| 11 | +Checkout the release branch you chose above, for example `git checkout release-3.5`. |
| 12 | + |
| 13 | +### Update README.md |
| 14 | + |
| 15 | +1. Search for any references to the previous version on the README, and update them if necessary. |
| 16 | +1. Update the [CSI Specification Compatibility Matrix](https://github.com/kubernetes-sigs/ibm-powervs-block-csi-driver#csi-specification-compatibility-matrix) section with the new version. |
| 17 | + |
| 18 | +### Update kustomization.yaml |
| 19 | + |
| 20 | +1. Edit the driver version in [kustomization.yaml](https://github.com/kubernetes-sigs/ibm-powervs-block-csi-driver/blob/main/deploy/kubernetes/overlays/stable/kustomization.yaml) with the release version. |
| 21 | +1. Update any side car versions if required. |
| 22 | + |
| 23 | +### Send a release PR to the release branch |
| 24 | + |
| 25 | +At this point you should have all changes required for the release commit. Verify the changes via git diff and send a new [PR](https://github.com/kubernetes-sigs/ibm-powervs-block-csi-driver/pulls) with the commit against the release branch. |
| 26 | + |
| 27 | + |
| 28 | +## Tag the release |
| 29 | + |
| 30 | +Once the PR is merged tag the release commit with the relase tag. You can do this locally to push the tag or use GitHub to create the realease tag. You'll need push privileges for this step. |
| 31 | + |
| 32 | +## Promote the new image on registry.k8s.io |
| 33 | + |
| 34 | +1. Once you create a release the new image will appear at the [GCR repo](https://console.cloud.google.com/gcr/images/k8s-staging-cloud-provider-ibm/global/ibm-powervs-block-csi-driver). |
| 35 | +1. Click on the release image and capture the `Digest` from overview tab. For example, `sha256:e9a1de089253f137c19d7414ac17c99ff7cc508473a8f12e0910c580dcc70a57`. |
| 36 | +1. Create a PR to add the new release version with above image digest to the [registry.k8s.io/images/k8s-staging-cloud-provider-ibm/images.yaml](https://github.com/kubernetes/k8s.io/blob/main/registry.k8s.io/images/k8s-staging-cloud-provider-ibm/images.yaml) |
| 37 | +1. Once the PR is merged, verify that the new image is listed at https://explore.ggcr.dev/?repo=registry.k8s.io%2Fcloud-provider-ibm%2Fibm-powervs-block-csi-driver |
| 38 | + |
| 39 | + |
| 40 | +## Create the post-release commit |
| 41 | + |
| 42 | +Checkout the main branch `git checkout main`. |
| 43 | + |
| 44 | +### Update README.md |
| 45 | + |
| 46 | +1. Update the [CSI Specification Compatibility Matrix](https://github.com/kubernetes-sigs/ibm-powervs-block-csi-driver#csi-specification-compatibility-matrix) section with the new version. |
| 47 | + |
| 48 | +### Update kustomization.yaml |
| 49 | + |
| 50 | +1. Edit the driver version in [kustomization.yaml](https://github.com/kubernetes-sigs/ibm-powervs-block-csi-driver/blob/main/deploy/kubernetes/overlays/stable/kustomization.yaml) with the release version. |
| 51 | +1. Update any side car versions if required. |
| 52 | + |
| 53 | +### Send a post-release PR to the main branch |
| 54 | + |
| 55 | +Create a new [PR](https://github.com/kubernetes-sigs/ibm-powervs-block-csi-driver/pulls) with the commit against the main branch. |
| 56 | + |
| 57 | +The README and kustomize deployment files must not be updated to refer to the new images until after the images have been verified, available, therefore it's necessary to make these changes in a post-release PR rather than the original release PR. |
0 commit comments