Skip to content

Commit 8967ca7

Browse files
authored
Merge pull request #4 from pohly/prow-update-master
master: update release-tools
2 parents d0158b7 + 1487f91 commit 8967ca7

29 files changed

+1107
-299
lines changed

OWNERS_ALIASES

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

cmd/glusterfile-provisioner/glusterfile-provisioner.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ import (
2525

2626
gcli "github.com/heketi/heketi/client/api/go-client"
2727
gapi "github.com/heketi/heketi/pkg/glusterfs/api"
28-
"sigs.k8s.io/sig-storage-lib-external-provisioner/controller"
29-
"sigs.k8s.io/sig-storage-lib-external-provisioner/gidallocator"
30-
"sigs.k8s.io/sig-storage-lib-external-provisioner/util"
3128
"github.com/pborman/uuid"
3229
"k8s.io/api/core/v1"
3330
"k8s.io/apimachinery/pkg/api/errors"
31+
"sigs.k8s.io/sig-storage-lib-external-provisioner/controller"
32+
"sigs.k8s.io/sig-storage-lib-external-provisioner/gidallocator"
33+
"sigs.k8s.io/sig-storage-lib-external-provisioner/util"
3434
//"k8s.io/apimachinery/pkg/api/resource"
3535
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3636
"k8s.io/apimachinery/pkg/util/wait"
@@ -415,6 +415,7 @@ func (p *glusterfileProvisioner) CreateVolume(gid *int, config *provisionerConfi
415415
func (p *glusterfileProvisioner) RequiresFSResize() bool {
416416
return false
417417
}
418+
418419
/*
419420
func (p *glusterfileProvisioner) ExpandVolumeDevice(spec *volume.Spec, newSize resource.Quantity, oldSize resource.Quantity) (resource.Quantity, error) {
420421
pvSpec := spec.PersistentVolume.Spec

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

+70-19
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,18 +26,19 @@ 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).
42-
1. New pull and CI jobs are configured by
43-
[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)
36+
instructions](https://github.com/kubernetes-csi/csi-release-tools/blob/HEAD/README.md#sharing-and-updating).
37+
1. New pull and CI jobs are configured by adding new K8s versions to the top of
38+
[gen-jobs.sh](https://github.com/kubernetes/test-infra/blob/HEAD/config/jobs/kubernetes-csi/gen-jobs.sh).
39+
New pull jobs that have been unverified should be initially made optional by
40+
setting the new K8s version as
41+
[experimental](https://github.com/kubernetes/test-infra/blob/a1858f46d6014480b130789df58b230a49203a64/config/jobs/kubernetes-csi/gen-jobs.sh#L40).
4642
1. Once new pull and CI jobs have been verified, and the new Kubernetes version
4743
is released, we can make the optional jobs required, and also remove the
4844
Kubernetes versions that are no longer supported.
@@ -51,17 +47,22 @@ naming convention `<hostpath-deployment-version>-on-<kubernetes-version>`.
5147
1. Identify all issues and ongoing PRs that should go into the release, and
5248
drive them to resolution.
5349
1. Download v2.8+ [K8s release notes
54-
generator](https://github.com/kubernetes/release/tree/master/cmd/release-notes)
50+
generator](https://github.com/kubernetes/release/tree/HEAD/cmd/release-notes)
5551
1. Generate release notes for the release. Replace arguments with the relevant
5652
information.
53+
* Clean up old cached information (also needed if you are generating release
54+
notes for multiple repos)
55+
```bash
56+
rm -rf /tmp/k8s-repo
57+
```
5758
* For new minor releases on master:
58-
```
59+
```bash
5960
GITHUB_TOKEN=<token> release-notes --discover=mergebase-to-latest
6061
--github-org=kubernetes-csi --github-repo=external-provisioner
6162
--required-author="" --output out.md
6263
```
6364
* For new patch releases on a release branch:
64-
```
65+
```bash
6566
GITHUB_TOKEN=<token> release-notes --discover=patch-to-latest --branch=release-1.1
6667
--github-org=kubernetes-csi --github-repo=external-provisioner
6768
--required-author="" --output out.md
@@ -86,9 +87,59 @@ naming convention `<hostpath-deployment-version>-on-<kubernetes-version>`.
8687
[external-provisioner example](https://github.com/kubernetes-csi/external-provisioner/releases/new)
8788
1. If release was a new major/minor version, create a new `release-<minor>`
8889
branch at that commit.
90+
1. Check [image build status](https://k8s-testgrid.appspot.com/sig-storage-image-build).
91+
1. Promote images from k8s-staging-sig-storage to k8s.gcr.io/sig-storage. From
92+
the [k8s image
93+
repo](https://github.com/kubernetes/k8s.io/tree/HEAD/k8s.gcr.io/images/k8s-staging-sig-storage),
94+
run `./generate.sh > images.yaml`, and send a PR with the updated images.
95+
Once merged, the image promoter will copy the images from staging to prod.
8996
1. Update [kubernetes-csi/docs](https://github.com/kubernetes-csi/docs) sidecar
9097
and feature pages with the new released version.
9198
1. After all the sidecars have been released, update
92-
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)
93100
and [k/k
94-
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)