1d60e779 Merge pull request #131 from pohly/kubernetes-1.20-tag 9f104590 prow.sh: support building Kubernetes for a specific version fe1f2848 Merge pull request #121 from kvaps/namespace-check 8fdf0f78 Merge pull request #128 from fengzixu/master 1c94220d fix: fix a bug of csi-sanity a4c41e6a Merge pull request #127 from pohly/fix-boilerplate ece0f500 check namespace for snapshot-controller dbd89672 verify-boilerplate.sh: fix path to script 9289fd16 Merge pull request #125 from sachinkumarsingh092/optional-spelling-boilerplate-checks ad29307f Make the spelling and boilerplate checks optional 5f06d024 Merge pull request #124 from sachinkumarsingh092/fix-spellcheck-boilerplate-tests 48186eba Fix spelling and boilerplate errors 71690aff Merge pull request #122 from sachinkumarsingh092/include-spellcheck-boilerplate-tests 981be3fe Adding spelling and boilerplate checks. 2bb75253 Merge pull request #117 from fengzixu/master 4ab8b154 use the tag to replace commit of csi-test 5d74e455 change the csi-test import path to v4 7dcd0a99 upgrade csi-test to v4.0.2 git-subtree-dir: release-tools git-subtree-split: 1d60e7792624a9938c0bd1b045211fbb89e513d6
6.1 KiB
6.1 KiB
Sidecar Release Process
This page describes the process for releasing a kubernetes-csi sidecar.
Prerequisites
The release manager must:
- Be a member of the kubernetes-csi organization. Open an issue in kubernetes/org to request membership
- Be a top level approver for the repository. To become a top level approver, the candidate must demonstrate ownership and deep knowledge of the repository through active maintenance, responding to and fixing issues, reviewing PRs, test triage.
- Be part of the maintainers or admin group for the repository. admin is a superset of maintainers, only maintainers level is required for cutting a release. Membership can be requested by submitting a PR to kubernetes/org. Example
Updating CI Jobs
Whenever a new Kubernetes minor version is released, our kubernetes-csi CI jobs must be updated.
Our CI jobs have the
naming convention <hostpath-deployment-version>-on-<kubernetes-version>
.
- Jobs should be actively monitored to find and fix failures in sidecars and infrastructure changes early in the development cycle. Test failures are sent to kubernetes-sig-storage-test-failures@googlegroups.com.
- "-on-master" jobs are the closest reflection to the new Kubernetes version.
- Fixes to our prow.sh CI script can be tested in the CSI hostpath repo by modifying prow.sh along with any overrides in .prow.sh to mirror the failing environment. Once e2e tests are passing (verify-unit tests will fail), then the prow.sh changes can be submitted to csi-release-tools.
- Changes can then be updated in all the sidecar repos and hostpath driver repo by following the update instructions.
- New pull and CI jobs are configured by adding new K8s versions to the top of gen-jobs.sh. New pull jobs that have been unverified should be initially made optional by setting the new K8s version as experimental.
- Once new pull and CI jobs have been verified, and the new Kubernetes version is released, we can make the optional jobs required, and also remove the Kubernetes versions that are no longer supported.
Release Process
- Identify all issues and ongoing PRs that should go into the release, and drive them to resolution.
- Download v2.8+ K8s release notes generator
- Generate release notes for the release. Replace arguments with the relevant
information.
- Clean up old cached information (also needed if you are generating release
notes for multiple repos)
rm -rf /tmp/k8s-repo
- For new minor releases on master:
GITHUB_TOKEN=<token> release-notes --discover=mergebase-to-latest --github-org=kubernetes-csi --github-repo=external-provisioner --required-author="" --output out.md
- For new patch releases on a release branch:
GITHUB_TOKEN=<token> release-notes --discover=patch-to-latest --branch=release-1.1 --github-org=kubernetes-csi --github-repo=external-provisioner --required-author="" --output out.md
- Clean up old cached information (also needed if you are generating release
notes for multiple repos)
- Compare the generated output to the new commits for the release to check if any notable change missed a release note.
- Reword release notes as needed. Make sure to check notes for breaking changes and deprecations.
- If release is a new major/minor version, create a new
CHANGELOG-<major>.<minor>.md
file. Otherwise, add the release notes to the top of the existing CHANGELOG file for that minor version. - Submit a PR for the CHANGELOG changes.
- Submit a PR for README changes, in particular, Compatibility, Feature status, and any other sections that may need updating.
- Check that all canary CI jobs are passing, and that test coverage is adequate for the changes that are going into the release.
- Make sure that no new PRs have merged in the meantime, and no PRs are in flight and soon to be merged.
- Create a new release following a previous release as a template. Be sure to select the correct branch. This requires Github release permissions as required by the prerequisites. external-provisioner example
- If release was a new major/minor version, create a new
release-<minor>
branch at that commit. - Check image build status.
- Promote images from k8s-staging-sig-storage to k8s.gcr.io/sig-storage. From
the k8s image
repo,
run
./generate.sh > images.yaml
, and send a PR with the updated images. Once merged, the image promoter will copy the images from staging to prod. - Update kubernetes-csi/docs sidecar and feature pages with the new released version.
- After all the sidecars have been released, update CSI hostpath driver with the new sidecars in the CSI repo and k/k in-tree