Skip to content

Commit 98cba09

Browse files
authored
Merge pull request #141 from msau42/kustomize
Add gke prow config
2 parents 77ceab3 + a782422 commit 98cba09

File tree

10 files changed

+123
-45
lines changed

10 files changed

+123
-45
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
These overlays are intended to be only used by prow for CI testing.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
kind: StatefulSet
2+
apiVersion: apps/v1
3+
metadata:
4+
name: csi-gce-pd-controller
5+
spec:
6+
template:
7+
spec:
8+
containers:
9+
- name: csi-provisioner
10+
image: gcr.io/gke-release-staging/csi-provisioner:latest
11+
- name: csi-attacher
12+
image: gcr.io/gke-release-staging/csi-attacher:latest
13+
- name: gce-pd-driver
14+
image: gcr.io/gke-release-staging/gcp-compute-persistent-disk-csi-driver:latest
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
bases:
2+
- ../../base
3+
patches:
4+
- controller_images.yaml
5+
- node_images.yaml
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
kind: DaemonSet
2+
apiVersion: apps/v1
3+
metadata:
4+
name: csi-gce-pd-node
5+
spec:
6+
template:
7+
spec:
8+
containers:
9+
- name: csi-driver-registrar
10+
image: gcr.io/gke-release-staging/csi-driver-registrar:latest
11+
- name: gce-pd-driver
12+
image: gcr.io/gke-release-staging/gcp-compute-persistent-disk-csi-driver:latest
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
These overlays are intended to be only used by prow for CI testing.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
kind: StatefulSet
2+
apiVersion: apps/v1
3+
metadata:
4+
name: csi-gce-pd-controller
5+
spec:
6+
template:
7+
spec:
8+
containers:
9+
- name: csi-provisioner
10+
image: gcr.io/gke-release-staging/csi-provisioner:v0.4.1-gke.0
11+
- name: csi-attacher
12+
image: gcr.io/gke-release-staging/csi-attacher:v0.4.1-gke.0
13+
- name: gce-pd-driver
14+
image: gcr.io/gke-release-staging/gcp-compute-persistent-disk-csi-driver:v0.2.0-gke.0
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
bases:
2+
- ../../base
3+
patches:
4+
- controller_images.yaml
5+
- node_images.yaml
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
kind: DaemonSet
2+
apiVersion: apps/v1
3+
metadata:
4+
name: csi-gce-pd-node
5+
spec:
6+
template:
7+
spec:
8+
containers:
9+
- name: csi-driver-registrar
10+
image: gcr.io/gke-release-staging/csi-driver-registrar:v0.4.1-gke.0
11+
- name: gce-pd-driver
12+
image: gcr.io/gke-release-staging/gcp-compute-persistent-disk-csi-driver:v0.2.0-gke.0

test/k8s-integration/main.go

Lines changed: 51 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ var (
4141
saFile = flag.String("service-account-file", "", "path of service account file")
4242
deployOverlayName = flag.String("deploy-overlay-name", "", "which kustomize overlay to deploy the driver with")
4343
localK8sDir = flag.String("local-k8s-dir", "", "local kubernetes/kubernetes directory to run e2e tests from")
44+
doDriverBuild = flag.Bool("do-driver-build", true, "building the driver from source")
4445
)
4546

4647
func init() {
@@ -100,14 +101,16 @@ func handle() error {
100101
}
101102
}()
102103

103-
*stagingImage = fmt.Sprintf("gcr.io/%s/gcp-persistent-disk-csi-driver", project)
104+
if *doDriverBuild {
105+
*stagingImage = fmt.Sprintf("gcr.io/%s/gcp-persistent-disk-csi-driver", project)
104106

105-
// TODO: once https://github.com/kubernetes-sigs/kustomize/issues/402 is implemented,
106-
// we no longer need to do this templating work and can just edit the image registry directly.
107-
overlayDir := getOverlayDir(pkgDir, *deployOverlayName)
108-
err = fillinOverlayTemplate(overlayDir, *stagingImage)
109-
if err != nil {
110-
return fmt.Errorf("tmpOverlayDir setup failed: %v", err)
107+
// TODO: once https://github.com/kubernetes-sigs/kustomize/issues/402 is implemented,
108+
// we no longer need to do this templating work and can just edit the image registry directly.
109+
overlayDir := getOverlayDir(pkgDir, *deployOverlayName)
110+
err = fillinOverlayTemplate(overlayDir, *stagingImage)
111+
if err != nil {
112+
return fmt.Errorf("tmpOverlayDir setup failed: %v", err)
113+
}
111114
}
112115

113116
if _, ok := os.LookupEnv("USER"); !ok {
@@ -118,21 +121,23 @@ func handle() error {
118121
}
119122
}
120123

121-
err := pushImage(pkgDir, *stagingImage, stagingVersion)
122-
if err != nil {
123-
return fmt.Errorf("failed pushing image: %v", err)
124-
}
125-
defer func() {
126-
if *teardownCluster {
127-
err = deleteImage(*stagingImage, stagingVersion)
128-
if err != nil {
129-
glog.Errorf("failed to delete image: %v", err)
130-
}
124+
if *doDriverBuild {
125+
err := pushImage(pkgDir, *stagingImage, stagingVersion)
126+
if err != nil {
127+
return fmt.Errorf("failed pushing image: %v", err)
131128
}
132-
}()
129+
defer func() {
130+
if *teardownCluster {
131+
err = deleteImage(*stagingImage, stagingVersion)
132+
if err != nil {
133+
glog.Errorf("failed to delete image: %v", err)
134+
}
135+
}
136+
}()
137+
}
133138

134139
if *bringupCluster {
135-
err = downloadKubernetesSource(pkgDir, k8sIoDir, *kubeVersion)
140+
err := downloadKubernetesSource(pkgDir, k8sIoDir, *kubeVersion)
136141
if err != nil {
137142
return fmt.Errorf("failed to download Kubernetes source: %v", err)
138143
}
@@ -150,14 +155,14 @@ func handle() error {
150155

151156
if *teardownCluster {
152157
defer func() {
153-
err = clusterDown(k8sDir)
158+
err := clusterDown(k8sDir)
154159
if err != nil {
155160
glog.Errorf("failed to cluster down: %v", err)
156161
}
157162
}()
158163
}
159164

160-
err = installDriver(goPath, pkgDir, k8sDir, *stagingImage, stagingVersion, *deployOverlayName)
165+
err := installDriver(goPath, pkgDir, k8sDir, *stagingImage, stagingVersion, *deployOverlayName, *doDriverBuild)
161166
if *teardownDriver {
162167
defer func() {
163168
// TODO (#140): collect driver logs
@@ -260,30 +265,32 @@ func getOverlayDir(pkgDir, deployOverlayName string) string {
260265
return filepath.Join(pkgDir, "deploy", "kubernetes", "overlays", deployOverlayName)
261266
}
262267

263-
func installDriver(goPath, pkgDir, k8sDir, stagingImage, stagingVersion, deployOverlayName string) error {
264-
// Install kustomize
265-
out, err := exec.Command(filepath.Join(pkgDir, "deploy", "kubernetes", "install-kustomize.sh")).CombinedOutput()
266-
if err != nil {
267-
return fmt.Errorf("failed to install kustomize: %s, err: %v", out, err)
268-
}
268+
func installDriver(goPath, pkgDir, k8sDir, stagingImage, stagingVersion, deployOverlayName string, doDriverBuild bool) error {
269+
if doDriverBuild {
270+
// Install kustomize
271+
out, err := exec.Command(filepath.Join(pkgDir, "deploy", "kubernetes", "install-kustomize.sh")).CombinedOutput()
272+
if err != nil {
273+
return fmt.Errorf("failed to install kustomize: %s, err: %v", out, err)
274+
}
269275

270-
// Edit ci kustomization to use given image tag
271-
overlayDir := getOverlayDir(pkgDir, deployOverlayName)
272-
err = os.Chdir(overlayDir)
273-
if err != nil {
274-
return fmt.Errorf("failed to change to overlay directory: %s, err: %v", out, err)
275-
}
276+
// Edit ci kustomization to use given image tag
277+
overlayDir := getOverlayDir(pkgDir, deployOverlayName)
278+
err = os.Chdir(overlayDir)
279+
if err != nil {
280+
return fmt.Errorf("failed to change to overlay directory: %s, err: %v", out, err)
281+
}
276282

277-
// TODO (#138): in a local environment this is going to modify the actual kustomize files.
278-
// maybe a copy should be made instead
279-
out, err = exec.Command(
280-
filepath.Join(pkgDir, "bin", "kustomize"),
281-
"edit",
282-
"set",
283-
"imagetag",
284-
fmt.Sprintf("%s:%s", stagingImage, stagingVersion)).CombinedOutput()
285-
if err != nil {
286-
return fmt.Errorf("failed to edit kustomize: %s, err: %v", out, err)
283+
// TODO (#138): in a local environment this is going to modify the actual kustomize files.
284+
// maybe a copy should be made instead
285+
out, err = exec.Command(
286+
filepath.Join(pkgDir, "bin", "kustomize"),
287+
"edit",
288+
"set",
289+
"imagetag",
290+
fmt.Sprintf("%s:%s", stagingImage, stagingVersion)).CombinedOutput()
291+
if err != nil {
292+
return fmt.Errorf("failed to edit kustomize: %s, err: %v", out, err)
293+
}
287294
}
288295

289296
// setup service account file for secret creation
@@ -293,7 +300,7 @@ func installDriver(goPath, pkgDir, k8sDir, stagingImage, stagingVersion, deployO
293300
defer os.Remove(filepath.Dir(tmpSaFile))
294301

295302
// Need to copy it to name the file "cloud-sa.json"
296-
out, err = exec.Command("cp", *saFile, tmpSaFile).CombinedOutput()
303+
out, err := exec.Command("cp", *saFile, tmpSaFile).CombinedOutput()
297304
if err != nil {
298305
return fmt.Errorf("error copying service account key: %s, err: %v", out, err)
299306
}

test/run-k8s-integration.sh

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
#!/bin/bash
22

3+
# Optional environment variables
4+
# GCE_PD_OVERLAY_NAME: which Kustomize overlay to deploy with
5+
# GCE_PD_DO_DRIVER_BUILD: if set, don't build the driver from source and just
6+
# use the driver version from the overlay
7+
38
set -o nounset
49
set -o errexit
510

611
readonly PKGDIR=${GOPATH}/src/sigs.k8s.io/gcp-compute-persistent-disk-csi-driver
12+
readonly overlay_name="${GCE_PD_OVERLAY_NAME:-prow-head-template}"
13+
readonly do_driver_build="${GCE_PD_DO_DRIVER_BUILD:-true}"
714

815
make -C ${PKGDIR} test-k8s-integration
9-
${PKGDIR}/bin/k8s-integration-test --kube-version=master --run-in-prow=true --deploy-overlay-name=prow-head-template --service-account-file=${E2E_GOOGLE_APPLICATION_CREDENTIALS}
16+
${PKGDIR}/bin/k8s-integration-test --kube-version=master --run-in-prow=true --deploy-overlay-name=${overlay_name} --service-account-file=${E2E_GOOGLE_APPLICATION_CREDENTIALS} --do-driver-build=${do_driver_build}

0 commit comments

Comments
 (0)