Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
cc564f9
verify-subtree.sh: relax check and ignore old content
pohly Mar 6, 2019
849db0a
Merge pull request #8 from pohly/subtree-check-relax
k8s-ci-robot Mar 6, 2019
94fc1e3
build.make: avoid unit-testing E2E test suite
pohly Mar 15, 2019
fb13c51
verify-shellcheck.sh: import from Kubernetes
pohly Mar 15, 2019
e6db50d
check vendor directory
pohly Mar 27, 2019
34010e7
Merge pull request #10 from pohly/vendor-check
k8s-ci-robot Mar 27, 2019
104a1ac
build.make: avoid unit-testing E2E test suite
pohly Mar 15, 2019
3b6af7b
Merge pull request #12 from pohly/local-e2e-suite
k8s-ci-robot Mar 29, 2019
b2d25d4
verify-shellcheck.sh: make it usable in csi-release-tools
pohly Mar 15, 2019
6c7ba1b
build.make: integrate shellcheck into "make test"
pohly Mar 26, 2019
55212ff
initial Prow test job
pohly Mar 15, 2019
2069a0a
Merge pull request #11 from pohly/verify-shellcheck
k8s-ci-robot Apr 2, 2019
0a0fd49
prow.sh: comment clarification
pohly Apr 2, 2019
429581c
prow.sh: pull Go version from travis.yml
pohly Apr 2, 2019
29545bb
prow.sh: take Go version from Kubernetes source
pohly Apr 3, 2019
741319b
prow.sh: improve building Kubernetes from source
pohly Apr 3, 2019
6602d38
prow.sh: different E2E suite depending on Kubernetes version
pohly Apr 3, 2019
d87eccb
prow.sh: switch back to upstream csi-driver-host-path
pohly Apr 3, 2019
95ae9de
Merge pull request #9 from pohly/prow
k8s-ci-robot Apr 3, 2019
f501443
prow.sh: AllAlpha=true for unknown Kubernetes versions
pohly Apr 5, 2019
31dfaf3
prow.sh: fix running of just "alpha" tests
pohly Apr 8, 2019
f3d1d2d
prow.sh: fix hostpath driver version check
pohly Apr 8, 2019
aa45a1c
prow.sh: more efficient execution of individual tests
pohly Apr 8, 2019
9b0d9cd
build.make: skip shellcheck if Docker is not available
pohly Apr 8, 2019
546d550
prow.sh: debug failing KinD cluster creation
pohly Apr 8, 2019
cda2fc5
prow.sh: avoid AllAlpha=true
pohly Apr 8, 2019
6617773
Merge pull request #13 from pohly/prow
k8s-ci-robot Apr 9, 2019
7aaac22
prow.sh: remove AllAlpha=all, part II
pohly Apr 10, 2019
c60f382
Merge pull request #14 from pohly/prow
k8s-ci-robot Apr 10, 2019
ff9bce4
Replace 'return' to 'exit' to fix shellcheck error
pengzhisun Apr 11, 2019
0c2677e
Merge pull request #15 from pengzhisun/master
k8s-ci-robot Apr 11, 2019
0b10f6a
prow.sh: update csi-driver-host-path
pohly Apr 11, 2019
bcac1c1
Merge pull request #16 from pohly/prow
k8s-ci-robot Apr 11, 2019
0fafc66
prow.sh: skip sanity testing if component doesn't support it
pohly Apr 11, 2019
88dc9a4
Merge pull request #17 from pohly/prow
k8s-ci-robot Apr 11, 2019
e157b6b
update to Go 1.12.4
pohly Apr 15, 2019
0bee749
Merge pull request #18 from pohly/go-version
k8s-ci-robot Apr 15, 2019
066143d
build.make: allow repos to use 'go mod' for vendoring
pohly May 10, 2019
0399988
Merge pull request #19 from pohly/go-mod-vendor
k8s-ci-robot May 13, 2019
b2f4e05
prow.sh: flexible test driver config
pohly Jul 8, 2019
db8abb6
Merge pull request #20 from pohly/test-driver-config
k8s-ci-robot Jul 8, 2019
a6f21d4
Add variables for 1.15
msau42 Jul 11, 2019
ecc7918
Update kind to v0.4.0. This requires overriding Kubernetes versions
msau42 Jul 11, 2019
4b6fa4a
Update hostpath version for sidecar testing to v1.2.0-rc2
msau42 Jul 11, 2019
4e31f07
Change default hostpath driver name to hostpath.csi.k8s.io
msau42 Jul 12, 2019
f4f73ce
Merge pull request #21 from msau42/add-1.15-jobs
k8s-ci-robot Jul 12, 2019
0c0dc30
prow.sh: tag master images with a large version number
msau42 Jul 15, 2019
1cac3af
Merge pull request #22 from msau42/add-1.15-jobs
k8s-ci-robot Jul 16, 2019
f46191d
Kubernetes master changed the way that releases are tagged, which needed
msau42 Aug 5, 2019
aa85b82
Merge pull request #23 from msau42/fix-master-jobs
k8s-ci-robot Aug 9, 2019
dc0a5d8
Update kind to v0.5.0
msau42 Aug 21, 2019
0400867
Merge pull request #25 from msau42/fix-master-jobs
k8s-ci-robot Aug 27, 2019
9fba09b
Add rule for building Windows binaries
ddebroy Aug 28, 2019
f85ab5a
Merge pull request #26 from ddebroy/windows1
k8s-ci-robot Aug 28, 2019
35ceaed
prow.sh: install dep if needed
pohly Aug 29, 2019
df8530d
Merge pull request #27 from pohly/dep-vendor-check
k8s-ci-robot Aug 29, 2019
a8ea8bc
create 2-node kind cluster since topology support is added to hostpat…
mucahitkurt Sep 6, 2019
2d33550
Merge pull request #29 from mucahitkurt/create-2-node-kind-cluster
k8s-ci-robot Sep 7, 2019
ea2f1b5
build windows binaries with .exe suffix
msau42 Sep 7, 2019
6ecaa76
Merge pull request #30 from msau42/fix-windows
k8s-ci-robot Sep 7, 2019
6208f6a
Enable hostpath expansion
gnufied Sep 16, 2019
0affdf9
Merge pull request #33 from gnufied/enable-hostpath-expansion
k8s-ci-robot Sep 16, 2019
194289a
update Go mod support
pohly Oct 4, 2019
c1078a6
go-get-kubernetes.sh: automate Kubernetes dependency handling
pohly Oct 7, 2019
2d6b3ce
Build Windows only for amd64
ddebroy Oct 7, 2019
518d6af
Merge pull request #35 from ddebroy/winbld2
k8s-ci-robot Oct 7, 2019
2c81919
Merge pull request #34 from pohly/go-mod-tidy
k8s-ci-robot Oct 8, 2019
f1697d2
Do full git clones in travis. Shallow clones are causing test-subtree
msau42 Oct 8, 2019
adf00fe
Merge pull request #36 from msau42/full-clone
k8s-ci-robot Oct 8, 2019
e0fde8c
Add new variables for 1.16 and remove 1.13
msau42 Oct 31, 2019
f419d74
Merge pull request #40 from msau42/add-1.16
k8s-ci-robot Oct 31, 2019
5e773d2
update CI to use Go 1.13.3
pohly Oct 31, 2019
c8a1c4a
better handling of Go version
pohly Oct 31, 2019
a53bd4c
Merge pull request #41 from pohly/go-version
k8s-ci-robot Oct 31, 2019
23df4ae
prow.sh: use vendor directory if available
pohly Nov 4, 2019
8067845
travis.yml: also use vendor directory
pohly Nov 4, 2019
ee22a9c
Merge pull request #42 from pohly/use-vendor-dir
k8s-ci-robot Nov 4, 2019
f41c135
prow.sh: also log output of system containers
pohly Nov 5, 2019
4fcafec
Merge pull request #43 from pohly/system-pod-logging
k8s-ci-robot Nov 6, 2019
83a4ef1
Adding build for ppc64le
Pensu Nov 19, 2019
1eaaaa1
Delete kind cluster after tests run.
mucahitkurt Nov 16, 2019
a41f386
Merge pull request #46 from mucahitkurt/kind-cluster-cleanup
k8s-ci-robot Nov 21, 2019
003c14b
Add snapshotter CRDs after cluster setup
ggriffiths Nov 12, 2019
8adde49
Merge pull request #45 from ggriffiths/snapshot_beta_crds
k8s-ci-robot Nov 25, 2019
6d674a7
Merge pull request #47 from Pensu/multi-arch
k8s-ci-robot Nov 26, 2019
80bba1f
Use kind v0.6.0
darkowlzz Nov 29, 2019
4ff2f5f
Merge pull request #50 from darkowlzz/kind-0.6.0
k8s-ci-robot Dec 2, 2019
9a7a685
Create a kind cluster with two worker nodes so that the topology feat…
msau42 Dec 3, 2019
53888ae
Improve README by adding an explicit Kubernetes dependency section
msau42 Dec 4, 2019
4ad6949
Improve snapshot pod running checks and improve version_gt
ggriffiths Dec 4, 2019
d7c69d2
Merge pull request #51 from msau42/enable-multinode
k8s-ci-robot Dec 4, 2019
771ca6f
Merge pull request #49 from ggriffiths/prowsh_improve_version_gt
k8s-ci-robot Dec 4, 2019
a4e6299
fix syntax for ppc64le build
msau42 Dec 4, 2019
540599b
Merge pull request #53 from msau42/fix-make
k8s-ci-robot Dec 4, 2019
9ace020
Merge pull request #52 from msau42/update-readme
k8s-ci-robot Dec 6, 2019
b98b2ae
Enable snapshot tests in 1.17 to be run in non-alpha jobs.
msau42 Dec 17, 2019
9f1f3dd
Merge pull request #56 from msau42/enable-snapshots
k8s-ci-robot Dec 18, 2019
fc80975
Fix version_gt to work with kubernetes prefix
ggriffiths Dec 21, 2019
f6c74b3
Merge pull request #57 from ggriffiths/version_gt_kubernetes_fix
k8s-ci-robot Dec 23, 2019
af9549b
Update prow hostpath driver version to 1.3.0-rc2
saad-ali Jan 2, 2020
5f444b8
Merge pull request #60 from saad-ali/updateHostpathVersion
k8s-ci-robot Jan 2, 2020
8b0316c
Fix overriding of junit results by using unique names for each e2e run
msau42 Jan 2, 2020
3c463fb
Merge pull request #61 from msau42/enable-snapshots
k8s-ci-robot Jan 2, 2020
8191eab
Update snapshotter to version v2.0.0
ggriffiths Jan 8, 2020
4cc9174
Merge pull request #64 from ggriffiths/snapshotter_2_version_update
k8s-ci-robot Jan 8, 2020
6582f2f
Update hostpath driver version to get fix for connection-timeout
msau42 Jan 10, 2020
23be652
Merge pull request #65 from msau42/update-hostpath
k8s-ci-robot Jan 10, 2020
ac8a021
Document the process for releasing a new sidecar
msau42 Dec 12, 2019
ff3cc3f
Merge pull request #54 from msau42/add-release-process
k8s-ci-robot Jan 13, 2020
fa90abd
fix incorrect link
windayski Jan 19, 2020
3c34b4f
Merge pull request #67 from windayski/fix-link
k8s-ci-robot Jan 24, 2020
22fa8a6
Go mod init
wozniakjan Feb 2, 2020
0e6e8d1
Update vendor from go modules
wozniakjan Feb 2, 2020
aec3981
Cleanup indirect dependencies
wozniakjan Feb 2, 2020
1cf5bd6
Delete go dep files
wozniakjan Feb 2, 2020
d2347b1
Merge pull request #22 from wozniakjan/migrate_to_go_mod
k8s-ci-robot Feb 4, 2020
84f78b1
prow.sh: generic driver installation
pohly Feb 10, 2020
5f74333
prow.sh: also configure feature gates for kubelet
pohly Feb 10, 2020
a1432bc
Merge pull request #70 from pohly/kubelet-feature-gates
k8s-ci-robot Feb 10, 2020
d717c8c
Merge pull request #69 from pohly/test-driver-config
k8s-ci-robot Feb 10, 2020
679bb9d
Add dependency on k8s.io/utils/mount
wozniakjan Feb 12, 2020
40f35a9
go mod vendor
wozniakjan Feb 12, 2020
fdb3218
Change 'make test-vet' to call 'go vet'
wozniakjan Feb 13, 2020
8e4ba5d
Update csi-release-tools
wozniakjan Feb 13, 2020
45e57bf
Merge pull request #23 from wozniakjan/update-release-tools-and-vendor
k8s-ci-robot Feb 13, 2020
d14ea3b
Change owners
Fedosin Mar 2, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1,410 changes: 0 additions & 1,410 deletions Gopkg.lock

This file was deleted.

86 changes: 0 additions & 86 deletions Gopkg.toml

This file was deleted.

8 changes: 1 addition & 7 deletions OWNERS
Original file line number Diff line number Diff line change
@@ -1,8 +1,2 @@
# See the OWNERS docs: https://git.k8s.io/community/contributors/guide/owners.md

approvers:
- msau42
- saad-ali
reviewers:
- msau42
- saad-ali
- shiftstack-team
7 changes: 7 additions & 0 deletions OWNERS_ALIASES
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
aliases:
shiftstack-team:
- Fedosin
- iamemilio
- mandre
- tomassedovic
- pierreprinetti
27 changes: 27 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
module github.com/kubernetes-csi/csi-driver-nfs

go 1.13

require (
github.com/container-storage-interface/spec v1.1.0
github.com/docker/distribution v2.7.1+incompatible // indirect
github.com/fatih/camelcase v1.0.0 // indirect
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
github.com/kubernetes-csi/csi-lib-utils v0.2.0
github.com/onsi/ginkgo v1.8.0
github.com/onsi/gomega v1.5.0
github.com/opencontainers/go-digest v1.0.0-rc1 // indirect
github.com/spf13/cobra v0.0.3
golang.org/x/net v0.0.0-20190415100556-4a65cf94b679
google.golang.org/grpc v1.20.0
k8s.io/api v0.0.0-20190415132514-c2f1300cac21
k8s.io/apiextensions-apiserver v0.0.0-20190315093550-53c4693659ed // indirect
k8s.io/apimachinery v0.0.0-20190415132420-07d458fe0356
k8s.io/cli-runtime v0.0.0-20190415133733-52015cbe156a // indirect
k8s.io/cluster-bootstrap v0.0.0-20190415134033-d885a12fbbe4 // indirect
k8s.io/csi-translation-lib v0.0.0-20190415134207-82f1dfd98d10 // indirect
k8s.io/kube-aggregator v0.0.0-20190415133304-80ce4e5a0cbc // indirect
k8s.io/kube-openapi v0.0.0-20190401085232-94e1e7b7574c // indirect
k8s.io/kubernetes v1.14.1
k8s.io/utils v0.0.0-20200124190032-861946025e34
)
297 changes: 297 additions & 0 deletions go.sum

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion pkg/nfs/nfs.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ package nfs
import (
"github.com/container-storage-interface/spec/lib/go/csi"
"github.com/golang/glog"
"k8s.io/kubernetes/pkg/util/mount"
"k8s.io/utils/mount"
)

type nfsDriver struct {
Expand Down
2 changes: 1 addition & 1 deletion pkg/nfs/nodeserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import (
"golang.org/x/net/context"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"k8s.io/kubernetes/pkg/util/mount"
"k8s.io/utils/mount"
)

type nodeServer struct {
Expand Down
7 changes: 7 additions & 0 deletions release-tools/.prow.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#! /bin/bash -e
#
# This is for testing csi-release-tools itself in Prow. All other
# repos use prow.sh for that, but as csi-release-tools isn't a normal
# repo with some Go code in it, it has a custom Prow test script.

./verify-shellcheck.sh "$(pwd)"
115 changes: 115 additions & 0 deletions release-tools/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,118 @@ Cheat sheet:
- `git subtree add --prefix=release-tools https://github.com/kubernetes-csi/csi-release-tools.git master` - add release tools to a repo which does not have them yet (only once)
- `git subtree pull --prefix=release-tools https://github.com/kubernetes-csi/csi-release-tools.git master` - update local copy to latest upstream (whenever upstream changes)
- edit, `git commit`, `git subtree push --prefix=release-tools git@github.com:<user>/csi-release-tools.git <my-new-or-existing-branch>` - push to a new branch before submitting a PR

verify-shellcheck.sh
--------------------

The [verify-shellcheck.sh](./verify-shellcheck.sh) script in this repo
is a stripped down copy of the [corresponding
script](https://github.com/kubernetes/kubernetes/blob/release-1.14/hack/verify-shellcheck.sh)
in the Kubernetes repository. It can be used to check for certain
errors shell scripts, like missing quotation marks. The default
`test-shellcheck` target in [build.make](./build.make) only checks the
scripts in this directory. Components can add more directories to
`TEST_SHELLCHECK_DIRS` to check also other scripts.

End-to-end testing
------------------

A repo that wants to opt into testing via Prow must set up a top-level
`.prow.sh`. Typically that will source `prow.sh` and then transfer
control to it:

``` bash
#! /bin/bash -e

. release-tools/prow.sh
main
```

All Kubernetes-CSI repos are expected to switch to Prow. For details
on what is enabled in Prow, see
https://github.com/kubernetes/test-infra/tree/master/config/jobs/kubernetes-csi

Test results for periodic jobs are visible in
https://testgrid.k8s.io/sig-storage-csi-ci

It is possible to reproduce the Prow testing locally on a suitable machine:
- Linux host
- Docker installed
- code to be tested checkout out in `$GOPATH/src/<import path>`
- `cd $GOPATH/src/<import path> && ./.prow.sh`

Beware that the script intentionally doesn't clean up after itself and
modifies the content of `$GOPATH`, in particular the `kubernetes` and
`kind` repositories there. Better run it in an empty, disposable
`$GOPATH`.

When it terminates, the following command can be used to get access to
the Kubernetes cluster that was brought up for testing (assuming that
this step succeeded):

export KUBECONFIG="$(kind get kubeconfig-path --name="csi-prow")"

It is possible to control the execution via environment variables. See
`prow.sh` for details. Particularly useful is testing against different
Kubernetes releases:

CSI_PROW_KUBERNETES_VERSION=1.13.3 ./.prow.sh
CSI_PROW_KUBERNETES_VERSION=latest ./.prow.sh

Dependencies and vendoring
--------------------------

Most projects will (eventually) use `go mod` to manage
dependencies. `dep` is also still supported by `csi-release-tools`,
but not documented here because it's not recommended anymore.

The usual instructions for using [go
modules](https://github.com/golang/go/wiki/Modules) apply. Here's a cheat sheet
for some of the relevant commands:
- list available updates: `GO111MODULE=on go list -u -m all`
- update or add a single dependency: `GO111MODULE=on go get <package>`
- update all dependencies to their next minor or patch release:
`GO111MODULE=on go get ./...` (add `-u=patch` to limit to patch
releases)
- lock onto a specific version: `GO111MODULE=on go get <package>@<version>`
- clean up `go.mod`: `GO111MODULE=on go mod tidy`
- update vendor directory: `GO111MODULE=on go mod vendor`

`GO111MODULE=on` can be left out when using Go >= 1.13 or when the
source is checked out outside of `$GOPATH`.

`go mod tidy` must be used to ensure that the listed dependencies are
really still needed. Changing import statements or a tentative `go
get` can result in stale dependencies.

The `test-vendor` verifies that it was used when run locally or in a
pre-merge CI job. If a `vendor` directory is present, it will also
verify that it's content is up-to-date.

The `vendor` directory is optional. It is still present in projects
because it avoids downloading sources during CI builds. If this is no
longer deemed necessary, then a project can also remove the directory.

Conversion of a repository that uses `dep` to `go mod` can be done with:

GO111MODULE=on go mod init
release-tools/go-get-kubernetes.sh <current Kubernetes version from Gopkg.toml>
GO111MODULE=on go mod tidy
GO111MODULE=on go mod vendor
git rm -f Gopkg.toml Gopkg.lock
git add go.mod go.sum vendor

### Updating Kubernetes dependencies

When using packages that are part of the Kubernetes source code, the
commands above are not enough because the [lack of semantic
versioning](https://github.com/kubernetes/kubernetes/issues/72638)
prevents `go mod` from finding newer releases. Importing directly from
`kubernetes/kubernetes` also needs `replace` statements to override
the fake `v0.0.0` versions
(https://github.com/kubernetes/kubernetes/issues/79384). The
`go-get-kubernetes.sh` script can be used to update all packages in
lockstep to a different Kubernetes version. Example usage:
```
$ ./release-tools/go-get-kubernetes.sh 1.16.4
```
90 changes: 90 additions & 0 deletions release-tools/SIDECAR_RELEASE_PROCESS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# 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](https://github.com/kubernetes/org/issues/new?assignees=&labels=area%2Fgithub-membership&template=membership.md&title=REQUEST%3A+New+membership+for+%3Cyour-GH-handle%3E) 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 maintainence, 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](https://github.com/kubernetes/org/pull/1467)

## Updating CI Jobs
Whenever a new Kubernetes minor version is released, our kubernetes-csi CI jobs
must be updated.

[Our CI jobs](https://k8s-testgrid.appspot.com/sig-storage-csi-ci) have the
naming convention `<hostpath-deployment-version>-on-<kubernetes-version>`.

1. 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.
1. "-on-master" jobs are the closest reflection to the new Kubernetes version.
1. Fixes to our prow.sh CI script can be tested in the [CSI hostpath
repo](https://github.com/kubernetes-csi/csi-driver-host-path) by modifying
[prow.sh](https://github.com/kubernetes-csi/csi-driver-host-path/blob/master/release-tools/prow.sh)
along with any overrides in
[.prow.sh](https://github.com/kubernetes-csi/csi-driver-host-path/blob/master/.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](https://github.com/kubernetes-csi/csi-release-tools).
1. Changes can then be updated in all the sidecar repos and hostpath driver repo
by following the [update
instructions](https://github.com/kubernetes-csi/csi-release-tools/blob/master/README.md#sharing-and-updating).
1. New pull and CI jobs are configured by
[gen-jobs.sh](https://github.com/kubernetes/test-infra/blob/master/config/jobs/kubernetes-csi/gen-jobs.sh).
New pull jobs that have been unverified should be initially made optional.
[Example](https://github.com/kubernetes/test-infra/pull/15055)
1. 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
1. Identify all issues and ongoing PRs that should go into the release, and
drive them to resolution.
1. Download [K8s release notes
generator](https://github.com/kubernetes/release/tree/master/cmd/release-notes)
1. Generate release notes for the release. Replace arguments with the relevant
information.
```
GITHUB_TOKEN=<token> ./release-notes --start-sha=0ed6978fd199e3ca10326b82b4b8b8e916211c9b --end-sha=3cb3d2f18ed8cb40371c6d8886edcabd1f27e7b9 \
--github-org=kubernetes-csi --github-repo=external-attacher -branch=master -output out.md
```
* `--start-sha` should point to the last release from the same branch. For
example:
* `1.X-1.0` tag when releasing `1.X.0`
* `1.X.Y-1` tag when releasing `1.X.Y`
1. Compare the generated output to the new commits for the release to check if
any notable change missed a release note.
1. Reword release notes as needed. Make sure to check notes for breaking
changes and deprecations.
1. 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.
1. Submit a PR for the CHANGELOG changes.
1. Submit a PR for README changes, in particular, Compatibility, Feature status,
and any other sections that may need updating.
1. Check that all [canary CI
jobs](https://k8s-testgrid.appspot.com/sig-storage-csi-ci) are passing,
and that test coverage is adequate for the changes that are going into the release.
1. Make sure that no new PRs have merged in the meantime, and no PRs are in
flight and soon to be merged.
1. 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](https://github.com/kubernetes-csi/external-provisioner/releases/new)
1. If release was a new major/minor version, create a new `release-<minor>`
branch at that commit.
1. Update [kubernetes-csi/docs](https://github.com/kubernetes-csi/docs) sidecar
and feature pages with the new released version.
1. After all the sidecars have been released, update
CSI hostpath driver with the new sidecars in the [CSI repo](https://github.com/kubernetes-csi/csi-driver-host-path/tree/master/deploy)
and [k/k
in-tree](https://github.com/kubernetes/kubernetes/tree/master/test/e2e/testing-manifests/storage-csi/hostpath/hostpath)
Loading