Skip to content

Commit a2d5c6e

Browse files
authored
Merge pull request #302 from msau42/release-2.1
Cherry pick of #298, #301: Re-enable k8s e2e tests
2 parents ed6cd4a + 236210d commit a2d5c6e

File tree

4 files changed

+49
-29
lines changed

4 files changed

+49
-29
lines changed

.prow.sh

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
#! /bin/bash
22

3-
CSI_PROW_TESTS="unit"
4-
53
. release-tools/prow.sh
64

75
main

release-tools/SIDECAR_RELEASE_PROCESS.md

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,21 @@ naming convention `<hostpath-deployment-version>-on-<kubernetes-version>`.
5454
generator](https://github.com/kubernetes/release/tree/master/cmd/release-notes)
5555
1. Generate release notes for the release. Replace arguments with the relevant
5656
information.
57-
```
58-
GITHUB_TOKEN=<token> ./release-notes --start-sha=0ed6978fd199e3ca10326b82b4b8b8e916211c9b --end-sha=3cb3d2f18ed8cb40371c6d8886edcabd1f27e7b9 \
59-
--github-org=kubernetes-csi --github-repo=external-attacher -branch=master -output out.md
60-
```
61-
* `--start-sha` should point to the last release from the same branch. For
62-
example:
63-
* `1.X-1.0` tag when releasing `1.X.0`
64-
* `1.X.Y-1` tag when releasing `1.X.Y`
57+
* For new minor releases on master:
58+
```
59+
GITHUB_TOKEN=<token> release-notes --discover=mergebase-to-latest
60+
--github-org=kubernetes-csi --github-repo=external-provisioner
61+
--required-author="" --output out.md
62+
```
63+
* For new patch releases on a release branch:
64+
```
65+
GITHUB_TOKEN=<token> release-notes --branch=release-1.1
66+
--start-rev=v1.1.1 --end-sha=f0a9219b29cc9053047c39d149ce9b22bc7b918b
67+
--github-org=kubernetes-csi --github-repo=external-provisioner
68+
--required-author="" --output out.md
69+
```
70+
* `--start-rev` should point to the last patch release from the release branch.
71+
* `--end-sha` should point to the latest commit from the release branch.
6572
1. Compare the generated output to the new commits for the release to check if
6673
any notable change missed a release note.
6774
1. Reword release notes as needed. Make sure to check notes for breaking

release-tools/build.make

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,18 +60,25 @@ else
6060
TESTARGS =
6161
endif
6262

63-
ARCH := $(if $(GOARCH),$(GOARCH),$(shell go env GOARCH))
64-
6563
# Specific packages can be excluded from each of the tests below by setting the *_FILTER_CMD variables
6664
# to something like "| grep -v 'github.com/kubernetes-csi/project/pkg/foobar'". See usage below.
6765

66+
# BUILD_PLATFORMS contains a set of <os> <arch> <suffix> triplets,
67+
# separated by semicolon. An empty variable or empty entry (= just a
68+
# semicolon) builds for the default platform of the current Go
69+
# toolchain.
70+
BUILD_PLATFORMS =
71+
72+
# This builds each command (= the sub-directories of ./cmd) for the target platform(s)
73+
# defined by BUILD_PLATFORMS.
6874
build-%: check-go-version-go
6975
mkdir -p bin
70-
CGO_ENABLED=0 GOOS=linux go build $(GOFLAGS_VENDOR) -a -ldflags '-X main.version=$(REV) -extldflags "-static"' -o ./bin/$* ./cmd/$*
71-
if [ "$$ARCH" = "amd64" ]; then \
72-
CGO_ENABLED=0 GOOS=windows go build $(GOFLAGS_VENDOR) -a -ldflags '-X main.version=$(REV) -extldflags "-static"' -o ./bin/$*.exe ./cmd/$* ; \
73-
CGO_ENABLED=0 GOOS=linux GOARCH=ppc64le go build $(GOFLAGS_VENDOR) -a -ldflags '-X main.version=$(REV) -extldflags "-static"' -o ./bin/$*-ppc64le ./cmd/$* ; \
74-
fi
76+
echo '$(BUILD_PLATFORMS)' | tr ';' '\n' | while read -r os arch suffix; do \
77+
if ! (set -x; CGO_ENABLED=0 GOOS="$$os" GOARCH="$$arch" go build $(GOFLAGS_VENDOR) -a -ldflags '-X main.version=$(REV) -extldflags "-static"' -o "./bin/$*$$suffix" ./cmd/$*); then \
78+
echo "Building $* for GOOS=$$os GOARCH=$$arch failed, see error(s) above."; \
79+
exit 1; \
80+
fi; \
81+
done
7582

7683
container-%: build-%
7784
docker build -t $*:latest -f $(shell if [ -e ./cmd/$*/Dockerfile ]; then echo ./cmd/$*/Dockerfile; else echo Dockerfile; fi) --label revision=$(REV) .

release-tools/prow.sh

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ get_versioned_variable () {
8585
echo "$value"
8686
}
8787

88+
configvar CSI_PROW_BUILD_PLATFORMS "linux amd64; windows amd64 .exe; linux ppc64le -ppc64le; linux s390x -s390x" "Go target platforms (= GOOS + GOARCH) and file suffix of the resulting binaries"
89+
8890
# If we have a vendor directory, then use it. We must be careful to only
8991
# use this for "make" invocations inside the project's repo itself because
9092
# setting it globally can break other go usages (like "go get <some command>"
@@ -340,7 +342,7 @@ configvar CSI_PROW_E2E_ALPHA_GATES_LATEST '' "alpha feature gates for latest Kub
340342
configvar CSI_PROW_E2E_ALPHA_GATES "$(get_versioned_variable CSI_PROW_E2E_ALPHA_GATES "${csi_prow_kubernetes_version_suffix}")" "alpha E2E feature gates"
341343

342344
# Which external-snapshotter tag to use for the snapshotter CRD and snapshot-controller deployment
343-
configvar CSI_SNAPSHOTTER_VERSION 'v2.0.0' "external-snapshotter version tag"
345+
configvar CSI_SNAPSHOTTER_VERSION 'v2.0.1' "external-snapshotter version tag"
344346

345347
# Some tests are known to be unusable in a KinD cluster. For example,
346348
# stopping kubelet with "ssh <node IP> systemctl stop kubelet" simply
@@ -1026,7 +1028,7 @@ main () {
10261028
images=
10271029
if ${CSI_PROW_BUILD_JOB}; then
10281030
# A successful build is required for testing.
1029-
run_with_go "${CSI_PROW_GO_VERSION_BUILD}" make all "GOFLAGS_VENDOR=${GOFLAGS_VENDOR}" || die "'make all' failed"
1031+
run_with_go "${CSI_PROW_GO_VERSION_BUILD}" make all "GOFLAGS_VENDOR=${GOFLAGS_VENDOR}" "BUILD_PLATFORMS=${CSI_PROW_BUILD_PLATFORMS}" || die "'make all' failed"
10301032
# We don't want test failures to prevent E2E testing below, because the failure
10311033
# might have been minor or unavoidable, for example when experimenting with
10321034
# changes in "release-tools" in a PR (that fails the "is release-tools unmodified"
@@ -1062,18 +1064,24 @@ main () {
10621064
# always pulling the image
10631065
# (https://github.com/kubernetes-sigs/kind/issues/328).
10641066
docker tag "$i:latest" "$i:csiprow" || die "tagging the locally built container image for $i failed"
1065-
done
10661067

1067-
if [ -e deploy/kubernetes/rbac.yaml ]; then
1068-
# This is one of those components which has its own RBAC rules (like external-provisioner).
1069-
# We are testing a locally built image and also want to test with the the current,
1070-
# potentially modified RBAC rules.
1071-
if [ "$(echo "$cmds" | wc -w)" != 1 ]; then
1072-
die "ambiguous deploy/kubernetes/rbac.yaml: need exactly one command, got: $cmds"
1068+
# For components with multiple cmds, the RBAC file should be in the following format:
1069+
# rbac-$cmd.yaml
1070+
# If this file cannot be found, we can default to the standard location:
1071+
# deploy/kubernetes/rbac.yaml
1072+
rbac_file_path=$(find . -type f -name "rbac-$i.yaml")
1073+
if [ "$rbac_file_path" == "" ]; then
1074+
rbac_file_path="$(pwd)/deploy/kubernetes/rbac.yaml"
10731075
fi
1074-
e=$(echo "$cmds" | tr '[:lower:]' '[:upper:]' | tr - _)
1075-
images="$images ${e}_RBAC=$(pwd)/deploy/kubernetes/rbac.yaml"
1076-
fi
1076+
1077+
if [ -e "$rbac_file_path" ]; then
1078+
# This is one of those components which has its own RBAC rules (like external-provisioner).
1079+
# We are testing a locally built image and also want to test with the the current,
1080+
# potentially modified RBAC rules.
1081+
e=$(echo "$i" | tr '[:lower:]' '[:upper:]' | tr - _)
1082+
images="$images ${e}_RBAC=$rbac_file_path"
1083+
fi
1084+
done
10771085
fi
10781086

10791087
if tests_need_non_alpha_cluster; then

0 commit comments

Comments
 (0)