Skip to content

Commit c2cdd84

Browse files
authored
Merge pull request #812 from pohly/prow-update-master
master: update release-tools
2 parents b647613 + 72d200f commit c2cdd84

26 files changed

+1004
-264
lines changed

OWNERS_ALIASES

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
release-tools/KUBERNETES_CSI_OWNERS_ALIASES

release-tools/.prow.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,23 @@
11
#! /bin/bash -e
2+
3+
# Copyright 2021 The Kubernetes Authors.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
28
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
317
# This is for testing csi-release-tools itself in Prow. All other
418
# repos use prow.sh for that, but as csi-release-tools isn't a normal
519
# repo with some Go code in it, it has a custom Prow test script.
620

721
./verify-shellcheck.sh "$(pwd)"
22+
./verify-spelling.sh "$(pwd)"
23+
./verify-boilerplate.sh "$(pwd)"
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# See the OWNERS docs: https://git.k8s.io/community/contributors/guide/owners.md
2+
3+
aliases:
4+
5+
# SIG-Storage chairs and leads should always have approval rights in all repos.
6+
# Others may be added as needed here or in each repo.
7+
kubernetes-csi-approvers:
8+
- jsafrane
9+
- msau42
10+
- saad-ali
11+
- xing-yang
12+
13+
# Reviewers are automatically assigned to new PRs. The following
14+
# reviewers will be active in all repos. Other reviewers can be
15+
# added in each repo.
16+
#
17+
# Reviewers are encouraged to set the "Busy" flag in their GitHub status
18+
# when they are temporarily unable to review PRs.
19+
kubernetes-csi-reviewers:
20+
- andyzhangx
21+
- chrishenzie
22+
- ggriffiths
23+
- gnufied
24+
- humblec
25+
- j-griffith
26+
- Jiawei0227
27+
- jingxu97
28+
- jsafrane
29+
- pohly
30+
- xing-yang
31+
32+
# This documents who previously contributed to Kubernetes-CSI
33+
# as approver.
34+
emeritus_approver:
35+
- lpabon
36+
- sbezverk
37+
- vladimirvivien
38+
39+
# This documents who previously contributed to Kubernetes-CSI
40+
# as reviewer.
41+
emeritus_reviewer:
42+
- lpabon
43+
- saad-ali
44+
- sbezverk
45+
- vladimirvivien

release-tools/OWNERS

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
# See the OWNERS docs: https://git.k8s.io/community/contributors/guide/owners.md
22

33
approvers:
4-
- saad-ali
5-
- msau42
4+
- kubernetes-csi-approvers
65
- pohly
76

87
reviewers:
9-
- saad-ali
10-
- msau42
11-
- pohly
8+
- kubernetes-csi-reviewers

release-tools/OWNERS_ALIASES

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
KUBERNETES_CSI_OWNERS_ALIASES

release-tools/README.md

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@ The expected repository layout is:
2121
Dockerfile in the root when only building a single command
2222
- `Makefile` - includes `release-tools/build.make` and sets
2323
configuration variables
24-
- `.travis.yml` - a symlink to `release-tools/.travis.yml`
24+
- `.prow.sh` script which imports `release-tools/prow.sh`
25+
and may contain further customization
26+
- `.cloudbuild.sh` and `cloudbuild.yaml` as symlinks to
27+
the corresponding files in `release-tools` or (if necessary)
28+
as custom files
2529

2630
To create a release, tag a certain revision with a name that
2731
starts with `v`, for example `v1.0.0`, then `make push`
@@ -44,10 +48,17 @@ is the recommended way of maintaining a copy of the rules inside the
4448
changes also locally, test them and then push them back to the shared
4549
repository at a later time.
4650

51+
We no longer care about importing the full commit history, so `--squash` should be used
52+
when submitting a `release-tools` update. Also make sure that the PR for that
53+
contains the automatically generated commit message in the PR description.
54+
It contains the list of individual commits that were squashed. The script from
55+
https://github.com/kubernetes-csi/csi-release-tools/issues/7 can create such
56+
PRs automatically.
57+
4758
Cheat sheet:
4859

49-
- `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)
50-
- `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)
60+
- `git subtree add --squash --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)
61+
- `git subtree pull --squash --prefix=release-tools https://github.com/kubernetes-csi/csi-release-tools.git master` - update local copy to latest upstream (whenever upstream changes)
5162
- edit, `git commit`, `git subtree push --prefix=release-tools [email protected]:<user>/csi-release-tools.git <my-new-or-existing-branch>` - push to a new branch before submitting a PR
5263

5364
verify-shellcheck.sh

release-tools/SIDECAR_RELEASE_PROCESS.md

Lines changed: 56 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ The release manager must:
1111
kubernetes/org to request membership
1212
* Be a top level approver for the repository. To become a top level approver,
1313
the candidate must demonstrate ownership and deep knowledge of the repository
14-
through active maintainence, responding to and fixing issues, reviewing PRs,
14+
through active maintenance, responding to and fixing issues, reviewing PRs,
1515
test triage.
1616
* Be part of the maintainers or admin group for the repository. admin is a
1717
superset of maintainers, only maintainers level is required for cutting a
@@ -39,10 +39,11 @@ naming convention `<hostpath-deployment-version>-on-<kubernetes-version>`.
3939
1. Changes can then be updated in all the sidecar repos and hostpath driver repo
4040
by following the [update
4141
instructions](https://github.com/kubernetes-csi/csi-release-tools/blob/master/README.md#sharing-and-updating).
42-
1. New pull and CI jobs are configured by
42+
1. New pull and CI jobs are configured by adding new K8s versions to the top of
4343
[gen-jobs.sh](https://github.com/kubernetes/test-infra/blob/master/config/jobs/kubernetes-csi/gen-jobs.sh).
44-
New pull jobs that have been unverified should be initially made optional.
45-
[Example](https://github.com/kubernetes/test-infra/pull/15055)
44+
New pull jobs that have been unverified should be initially made optional by
45+
setting the new K8s version as
46+
[experimental](https://github.com/kubernetes/test-infra/blob/a1858f46d6014480b130789df58b230a49203a64/config/jobs/kubernetes-csi/gen-jobs.sh#L40).
4647
1. Once new pull and CI jobs have been verified, and the new Kubernetes version
4748
is released, we can make the optional jobs required, and also remove the
4849
Kubernetes versions that are no longer supported.
@@ -54,14 +55,19 @@ naming convention `<hostpath-deployment-version>-on-<kubernetes-version>`.
5455
generator](https://github.com/kubernetes/release/tree/master/cmd/release-notes)
5556
1. Generate release notes for the release. Replace arguments with the relevant
5657
information.
58+
* Clean up old cached information (also needed if you are generating release
59+
notes for multiple repos)
60+
```bash
61+
rm -rf /tmp/k8s-repo
62+
```
5763
* For new minor releases on master:
58-
```
64+
```bash
5965
GITHUB_TOKEN=<token> release-notes --discover=mergebase-to-latest
6066
--github-org=kubernetes-csi --github-repo=external-provisioner
6167
--required-author="" --output out.md
6268
```
6369
* For new patch releases on a release branch:
64-
```
70+
```bash
6571
GITHUB_TOKEN=<token> release-notes --discover=patch-to-latest --branch=release-1.1
6672
--github-org=kubernetes-csi --github-repo=external-provisioner
6773
--required-author="" --output out.md
@@ -98,3 +104,47 @@ naming convention `<hostpath-deployment-version>-on-<kubernetes-version>`.
98104
CSI hostpath driver with the new sidecars in the [CSI repo](https://github.com/kubernetes-csi/csi-driver-host-path/tree/master/deploy)
99105
and [k/k
100106
in-tree](https://github.com/kubernetes/kubernetes/tree/master/test/e2e/testing-manifests/storage-csi/hostpath/hostpath)
107+
108+
## Adding support for a new Kubernetes release
109+
110+
1. Add the new release to `k8s_versions` in
111+
https://github.com/kubernetes/test-infra/blob/090dec5dd535d5f61b7ba52e671a810f5fc13dfd/config/jobs/kubernetes-csi/gen-jobs.sh#L25
112+
to enable generating a job for it. Set `experimental_k8s_version`
113+
in
114+
https://github.com/kubernetes/test-infra/blob/090dec5dd535d5f61b7ba52e671a810f5fc13dfd/config/jobs/kubernetes-csi/gen-jobs.sh#L40
115+
to ensure that the new jobs aren't run for PRs unless explicitly
116+
requested. Generate and submit the new jobs.
117+
1. Create a test PR to try out the new job in some repo with `/test
118+
pull-kubernetes-csi-<repo>-<x.y>-on-kubernetes-<x.y>` where x.y
119+
matches the Kubernetes release. Alternatively, run .prow.sh in that
120+
repo locally with `CSI_PROW_KUBERNETES_VERSION=x.y.z`.
121+
1. Optional: update to a [new
122+
release](https://github.com/kubernetes-sigs/kind/tags) of kind with
123+
pre-built images for the new Kubernetes release. This is optional
124+
if the current version of kind is able to build images for the new
125+
Kubernetes release. However, jobs require less resources when they
126+
don't need to build those images from the Kubernetes source code.
127+
This change needs to be tried out in a PR against a component
128+
first, then get submitted against csi-release-tools.
129+
1. Optional: propagate the updated csi-release-tools to all components
130+
with the script from
131+
https://github.com/kubernetes-csi/csi-release-tools/issues/7#issuecomment-707025402
132+
1. Once it is likely to work in all components, unset
133+
`experimental_k8s_version` and submit the updated jobs.
134+
1. Once all sidecars for the new Kubernetes release are released,
135+
either bump the version number of the images in the existing
136+
[csi-driver-host-path
137+
deployments](https://github.com/kubernetes-csi/csi-driver-host-path/tree/master/deploy)
138+
and/or create a new deployment, depending on what Kubernetes
139+
release an updated sidecar is compatible with. If no new deployment
140+
is needed, then add a symlink to document that there intentionally
141+
isn't a separate deployment. This symlink is not needed for Prow
142+
testing because that will use "kubernetes-latest" as fallback.
143+
Update that link when creating a new deployment.
144+
1. Create a new csi-driver-host-path release.
145+
1. Bump `CSI_PROW_DRIVER_VERSION` in prow.sh to that new release and
146+
(eventually) roll that change out to all repos by updating
147+
`release-tools` in them. This is used when testing manually. The
148+
Prow jobs override that value, so also update
149+
`hostpath_driver_version` in
150+
https://github.com/kubernetes/test-infra/blob/91b04e6af3a40a9bcff25aa030850a4721e2dd2b/config/jobs/kubernetes-csi/gen-jobs.sh#L46-L47
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Copyright YEAR The Kubernetes Authors.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Copyright YEAR The Kubernetes Authors.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Copyright YEAR The Kubernetes Authors.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.

0 commit comments

Comments
 (0)