Skip to content

Commit ff001a1

Browse files
authored
Merge pull request #144 from spiffxp/update-release-tools
Update release-tools to 5489de6
2 parents 0a8665a + 63cac3c commit ff001a1

27 files changed

+883
-187
lines changed

OWNERS_ALIASES

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
release-tools/OWNERS_ALIASES

release-tools/.prow.sh

+16
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)"
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

+2-5
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

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
KUBERNETES_CSI_OWNERS_ALIASES

release-tools/README.md

+16-5
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`
@@ -38,16 +42,23 @@ images. Building from master creates the main `canary` image.
3842
Sharing and updating
3943
--------------------
4044

41-
[`git subtree`](https://github.com/git/git/blob/master/contrib/subtree/git-subtree.txt)
45+
[`git subtree`](https://github.com/git/git/blob/HEAD/contrib/subtree/git-subtree.txt)
4246
is the recommended way of maintaining a copy of the rules inside the
4347
`release-tools` directory of a project. This way, it is possible to make
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
@@ -78,7 +89,7 @@ main
7889

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

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

release-tools/SECURITY_CONTACTS

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# to for triaging and handling of incoming issues.
55
#
66
# The below names agree to abide by the
7-
# [Embargo Policy](https://github.com/kubernetes/sig-release/blob/master/security-release-process-documentation/security-release-process.md#embargo-policy)
7+
# [Embargo Policy](https://github.com/kubernetes/sig-release/blob/HEAD/security-release-process-documentation/security-release-process.md#embargo-policy)
88
# and will be removed and replaced if they violate that agreement.
99
#
1010
# DO NOT REPORT SECURITY VULNERABILITIES DIRECTLY TO THESE NAMES, FOLLOW THE

release-tools/SIDECAR_RELEASE_PROCESS.md

+54-15
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,8 @@ The release manager must:
99
* Be a member of the kubernetes-csi organization. Open an
1010
[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
1111
kubernetes/org to request membership
12-
* Be a top level approver for the repository. To become a top level approver,
13-
the candidate must demonstrate ownership and deep knowledge of the repository
14-
through active maintainence, responding to and fixing issues, reviewing PRs,
15-
test triage.
16-
* Be part of the maintainers or admin group for the repository. admin is a
17-
superset of maintainers, only maintainers level is required for cutting a
18-
release. Membership can be requested by submitting a PR to kubernetes/org.
12+
* Be part of the maintainers group for the repository.
13+
Membership can be requested by submitting a PR to kubernetes/org.
1914
[Example](https://github.com/kubernetes/org/pull/1467)
2015

2116
## Updating CI Jobs
@@ -31,16 +26,16 @@ naming convention `<hostpath-deployment-version>-on-<kubernetes-version>`.
3126
1. "-on-master" jobs are the closest reflection to the new Kubernetes version.
3227
1. Fixes to our prow.sh CI script can be tested in the [CSI hostpath
3328
repo](https://github.com/kubernetes-csi/csi-driver-host-path) by modifying
34-
[prow.sh](https://github.com/kubernetes-csi/csi-driver-host-path/blob/master/release-tools/prow.sh)
29+
[prow.sh](https://github.com/kubernetes-csi/csi-driver-host-path/blob/HEAD/release-tools/prow.sh)
3530
along with any overrides in
36-
[.prow.sh](https://github.com/kubernetes-csi/csi-driver-host-path/blob/master/.prow.sh)
31+
[.prow.sh](https://github.com/kubernetes-csi/csi-driver-host-path/blob/HEAD/.prow.sh)
3732
to mirror the failing environment. Once e2e tests are passing (verify-unit tests
3833
will fail), then the prow.sh changes can be submitted to [csi-release-tools](https://github.com/kubernetes-csi/csi-release-tools).
3934
1. Changes can then be updated in all the sidecar repos and hostpath driver repo
4035
by following the [update
41-
instructions](https://github.com/kubernetes-csi/csi-release-tools/blob/master/README.md#sharing-and-updating).
36+
instructions](https://github.com/kubernetes-csi/csi-release-tools/blob/HEAD/README.md#sharing-and-updating).
4237
1. New pull and CI jobs are configured by adding new K8s versions to the top of
43-
[gen-jobs.sh](https://github.com/kubernetes/test-infra/blob/master/config/jobs/kubernetes-csi/gen-jobs.sh).
38+
[gen-jobs.sh](https://github.com/kubernetes/test-infra/blob/HEAD/config/jobs/kubernetes-csi/gen-jobs.sh).
4439
New pull jobs that have been unverified should be initially made optional by
4540
setting the new K8s version as
4641
[experimental](https://github.com/kubernetes/test-infra/blob/a1858f46d6014480b130789df58b230a49203a64/config/jobs/kubernetes-csi/gen-jobs.sh#L40).
@@ -52,7 +47,7 @@ naming convention `<hostpath-deployment-version>-on-<kubernetes-version>`.
5247
1. Identify all issues and ongoing PRs that should go into the release, and
5348
drive them to resolution.
5449
1. Download v2.8+ [K8s release notes
55-
generator](https://github.com/kubernetes/release/tree/master/cmd/release-notes)
50+
generator](https://github.com/kubernetes/release/tree/HEAD/cmd/release-notes)
5651
1. Generate release notes for the release. Replace arguments with the relevant
5752
information.
5853
* Clean up old cached information (also needed if you are generating release
@@ -95,12 +90,56 @@ naming convention `<hostpath-deployment-version>-on-<kubernetes-version>`.
9590
1. Check [image build status](https://k8s-testgrid.appspot.com/sig-storage-image-build).
9691
1. Promote images from k8s-staging-sig-storage to k8s.gcr.io/sig-storage. From
9792
the [k8s image
98-
repo](https://github.com/kubernetes/k8s.io/tree/master/k8s.gcr.io/images/k8s-staging-sig-storage),
93+
repo](https://github.com/kubernetes/k8s.io/tree/HEAD/k8s.gcr.io/images/k8s-staging-sig-storage),
9994
run `./generate.sh > images.yaml`, and send a PR with the updated images.
10095
Once merged, the image promoter will copy the images from staging to prod.
10196
1. Update [kubernetes-csi/docs](https://github.com/kubernetes-csi/docs) sidecar
10297
and feature pages with the new released version.
10398
1. After all the sidecars have been released, update
104-
CSI hostpath driver with the new sidecars in the [CSI repo](https://github.com/kubernetes-csi/csi-driver-host-path/tree/master/deploy)
99+
CSI hostpath driver with the new sidecars in the [CSI repo](https://github.com/kubernetes-csi/csi-driver-host-path/tree/HEAD/deploy)
105100
and [k/k
106-
in-tree](https://github.com/kubernetes/kubernetes/tree/master/test/e2e/testing-manifests/storage-csi/hostpath/hostpath)
101+
in-tree](https://github.com/kubernetes/kubernetes/tree/HEAD/test/e2e/testing-manifests/storage-csi/hostpath/hostpath)
102+
103+
## Adding support for a new Kubernetes release
104+
105+
1. Add the new release to `k8s_versions` in
106+
https://github.com/kubernetes/test-infra/blob/090dec5dd535d5f61b7ba52e671a810f5fc13dfd/config/jobs/kubernetes-csi/gen-jobs.sh#L25
107+
to enable generating a job for it. Set `experimental_k8s_version`
108+
in
109+
https://github.com/kubernetes/test-infra/blob/090dec5dd535d5f61b7ba52e671a810f5fc13dfd/config/jobs/kubernetes-csi/gen-jobs.sh#L40
110+
to ensure that the new jobs aren't run for PRs unless explicitly
111+
requested. Generate and submit the new jobs.
112+
1. Create a test PR to try out the new job in some repo with `/test
113+
pull-kubernetes-csi-<repo>-<x.y>-on-kubernetes-<x.y>` where x.y
114+
matches the Kubernetes release. Alternatively, run .prow.sh in that
115+
repo locally with `CSI_PROW_KUBERNETES_VERSION=x.y.z`.
116+
1. Optional: update to a [new
117+
release](https://github.com/kubernetes-sigs/kind/tags) of kind with
118+
pre-built images for the new Kubernetes release. This is optional
119+
if the current version of kind is able to build images for the new
120+
Kubernetes release. However, jobs require less resources when they
121+
don't need to build those images from the Kubernetes source code.
122+
This change needs to be tried out in a PR against a component
123+
first, then get submitted against csi-release-tools.
124+
1. Optional: propagate the updated csi-release-tools to all components
125+
with the script from
126+
https://github.com/kubernetes-csi/csi-release-tools/issues/7#issuecomment-707025402
127+
1. Once it is likely to work in all components, unset
128+
`experimental_k8s_version` and submit the updated jobs.
129+
1. Once all sidecars for the new Kubernetes release are released,
130+
either bump the version number of the images in the existing
131+
[csi-driver-host-path
132+
deployments](https://github.com/kubernetes-csi/csi-driver-host-path/tree/HEAD/deploy)
133+
and/or create a new deployment, depending on what Kubernetes
134+
release an updated sidecar is compatible with. If no new deployment
135+
is needed, then add a symlink to document that there intentionally
136+
isn't a separate deployment. This symlink is not needed for Prow
137+
testing because that will use "kubernetes-latest" as fallback.
138+
Update that link when creating a new deployment.
139+
1. Create a new csi-driver-host-path release.
140+
1. Bump `CSI_PROW_DRIVER_VERSION` in prow.sh to that new release and
141+
(eventually) roll that change out to all repos by updating
142+
`release-tools` in them. This is used when testing manually. The
143+
Prow jobs override that value, so also update
144+
`hostpath_driver_version` in
145+
https://github.com/kubernetes/test-infra/blob/91b04e6af3a40a9bcff25aa030850a4721e2dd2b/config/jobs/kubernetes-csi/gen-jobs.sh#L46-L47
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.
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.
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.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/*
2+
Copyright YEAR The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/

0 commit comments

Comments
 (0)