diff --git a/Dockerfile b/Dockerfile index 531b66a4b..8064d04fe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ ARG BUILDPLATFORM -FROM --platform=$BUILDPLATFORM golang:1.18.9 as builder +FROM --platform=$BUILDPLATFORM golang:1.19.6 as builder ARG STAGINGVERSION ARG TARGETPLATFORM @@ -24,7 +24,7 @@ ADD . . RUN GOARCH=$(echo $TARGETPLATFORM | cut -f2 -d '/') GCE_PD_CSI_STAGING_VERSION=$STAGINGVERSION make gce-pd-driver # Start from Kubernetes Debian base. -FROM k8s.gcr.io/build-image/debian-base:buster-v1.9.0 as debian +FROM gke.gcr.io/debian-base:bullseye-v1.4.3-gke.0 as debian # Install necessary dependencies # google_nvme_id script depends on the following packages: nvme-cli, xxd, bash RUN clean-install util-linux e2fsprogs mount ca-certificates udev xfsprogs nvme-cli xxd bash @@ -74,28 +74,30 @@ COPY --from=debian /bin/ln /bin/ln COPY --from=debian /bin/udevadm /bin/udevadm # Copy shared libraries into distroless base. -COPY --from=debian /lib/${LIB_DIR_PREFIX}-linux-gnu/libblkid.so.1 \ +COPY --from=debian /lib/${LIB_DIR_PREFIX}-linux-gnu/libpcre.so.3 \ + /lib/${LIB_DIR_PREFIX}-linux-gnu/libselinux.so.1 \ + /lib/${LIB_DIR_PREFIX}-linux-gnu/libtinfo.so.6 \ + /lib/${LIB_DIR_PREFIX}-linux-gnu/libe2p.so.2 \ /lib/${LIB_DIR_PREFIX}-linux-gnu/libcom_err.so.2 \ /lib/${LIB_DIR_PREFIX}-linux-gnu/libdevmapper.so.1.02.1 \ - /lib/${LIB_DIR_PREFIX}-linux-gnu/libe2p.so.2 \ /lib/${LIB_DIR_PREFIX}-linux-gnu/libext2fs.so.2 \ /lib/${LIB_DIR_PREFIX}-linux-gnu/libgcc_s.so.1 \ /lib/${LIB_DIR_PREFIX}-linux-gnu/liblzma.so.5 \ - /lib/${LIB_DIR_PREFIX}-linux-gnu/libmount.so.1 \ - /lib/${LIB_DIR_PREFIX}-linux-gnu/libpcre.so.3 \ - /lib/${LIB_DIR_PREFIX}-linux-gnu/libreadline.so.5 \ - /lib/${LIB_DIR_PREFIX}-linux-gnu/libselinux.so.1 \ - /lib/${LIB_DIR_PREFIX}-linux-gnu/libtinfo.so.6 \ - /lib/${LIB_DIR_PREFIX}-linux-gnu/libudev.so.1 \ - /lib/${LIB_DIR_PREFIX}-linux-gnu/libuuid.so.1 \ + /lib/${LIB_DIR_PREFIX}-linux-gnu/libreadline.so.8 \ /lib/${LIB_DIR_PREFIX}-linux-gnu/libz.so.1 /lib/${LIB_DIR_PREFIX}-linux-gnu/ -COPY --from=debian /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libacl.so.1 \ +COPY --from=debian /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libblkid.so.1 \ + /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libinih.so.1 \ + /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libmount.so.1 \ + /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libudev.so.1 \ + /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libuuid.so.1 \ + /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libacl.so.1 \ /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libattr.so.1 \ - /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libicudata.so.63 \ - /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libicui18n.so.63 \ - /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libicuuc.so.63 \ + /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libicudata.so.67 \ + /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libicui18n.so.67 \ + /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libicuuc.so.67 \ /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libkmod.so.2 \ + /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libpcre2-8.so.0 \ /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libstdc++.so.6 /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/ # Copy NVME support required script and rules into distroless base. diff --git a/Dockerfile.Windows b/Dockerfile.Windows index 508b0e165..091b61cda 100644 --- a/Dockerfile.Windows +++ b/Dockerfile.Windows @@ -13,7 +13,7 @@ # limitations under the License. ARG BASE_IMAGE -FROM --platform=$BUILDPLATFORM golang:1.18.9 AS builder +FROM --platform=$BUILDPLATFORM golang:1.19.6 AS builder ARG TARGETPLATFORM ARG BUILDPLATFORM diff --git a/Dockerfile.debug b/Dockerfile.debug index 9a1dae55c..5ec446752 100644 --- a/Dockerfile.debug +++ b/Dockerfile.debug @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM golang:1.13.15 as builder +FROM golang:1.19.6 as builder WORKDIR /go/src/sigs.k8s.io/gcp-compute-persistent-disk-csi-driver ADD . . diff --git a/pkg/gce-cloud-provider/compute/gce-compute.go b/pkg/gce-cloud-provider/compute/gce-compute.go index cc23f21d7..e62dc5429 100644 --- a/pkg/gce-cloud-provider/compute/gce-compute.go +++ b/pkg/gce-cloud-provider/compute/gce-compute.go @@ -1129,9 +1129,13 @@ func (cloud *CloudProvider) waitForSnapshotCreation(ctx context.Context, project // kmsKeyEqual returns true if fetchedKMSKey and storageClassKMSKey refer to the same key. // fetchedKMSKey - key returned by the server -// example: projects/{0}/locations/{1}/keyRings/{2}/cryptoKeys/{3}/cryptoKeyVersions/{4} +// +// example: projects/{0}/locations/{1}/keyRings/{2}/cryptoKeys/{3}/cryptoKeyVersions/{4} +// // storageClassKMSKey - key as provided by the client -// example: projects/{0}/locations/{1}/keyRings/{2}/cryptoKeys/{3} +// +// example: projects/{0}/locations/{1}/keyRings/{2}/cryptoKeys/{3} +// // cryptoKeyVersions should be disregarded if the rest of the key is identical. func KmsKeyEqual(fetchedKMSKey, storageClassKMSKey string) bool { return removeCryptoKeyVersion(fetchedKMSKey) == removeCryptoKeyVersion(storageClassKMSKey) diff --git a/pkg/gce-pd-csi-driver/node_test.go b/pkg/gce-pd-csi-driver/node_test.go index db4f5c15d..f064a4b18 100644 --- a/pkg/gce-pd-csi-driver/node_test.go +++ b/pkg/gce-pd-csi-driver/node_test.go @@ -4,7 +4,9 @@ Copyright 2018 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. diff --git a/test/k8s-integration/main.go b/test/k8s-integration/main.go index 477426315..cd3b09454 100644 --- a/test/k8s-integration/main.go +++ b/test/k8s-integration/main.go @@ -572,6 +572,9 @@ func generateGCETestSkip(testParams *testParameters) string { skipString = skipString + "|\\[LinuxOnly\\]" } + // Snapshot and restore test fixes which is added in driver version 1.9+. + skipString = skipString + "|should.provision.correct.filesystem.size.when.restoring.snapshot.to.larger.size.pvc" + return skipString } @@ -620,6 +623,10 @@ func generateGKETestSkip(testParams *testParameters) string { (!testParams.useGKEManagedDriver && (*curVer).lessThan(mustParseVersion("1.17.0"))) { skipString = skipString + "|VolumeSnapshotDataSource" } + + // Snapshot and restore test fixes which is added in driver version 1.9+. + skipString = skipString + "|should.provision.correct.filesystem.size.when.restoring.snapshot.to.larger.size.pvc" + return skipString } diff --git a/test/k8s-integration/version.go b/test/k8s-integration/version.go index 24e3e8a1e..e67613cc0 100644 --- a/test/k8s-integration/version.go +++ b/test/k8s-integration/version.go @@ -131,9 +131,10 @@ func mustParseVersion(version string) *version { } // Helper function to compare versions. -// -1 -- if left < right -// 0 -- if left == right -// 1 -- if left > right +// +// -1 -- if left < right +// 0 -- if left == right +// 1 -- if left > right func (v *version) compare(right *version) int { for i, b := range v.version { if b > right.version[i] { diff --git a/test/run-k8s-integration.sh b/test/run-k8s-integration.sh index 7590f6dc9..8b9dd63f5 100755 --- a/test/run-k8s-integration.sh +++ b/test/run-k8s-integration.sh @@ -35,10 +35,12 @@ readonly GCE_PD_TEST_FOCUS="PersistentVolumes\sGCEPD|[V|v]olume\sexpand|\[sig-st make -C "${PKGDIR}" test-k8s-integration if [ "$use_kubetest2" = true ]; then - go install sigs.k8s.io/kubetest2@latest; - go install sigs.k8s.io/kubetest2/kubetest2-gce@latest; - go install sigs.k8s.io/kubetest2/kubetest2-gke@latest; - go install sigs.k8s.io/kubetest2/kubetest2-tester-ginkgo@latest; + # Choose an older Kubetest2 commit version instead of using @latest + # because of a regression in https://github.com/kubernetes-sigs/kubetest2/pull/183. + go install sigs.k8s.io/kubetest2@0e09086b60c122e1084edd2368d3d27fe36f384f; + go install sigs.k8s.io/kubetest2/kubetest2-gce@0e09086b60c122e1084edd2368d3d27fe36f384f; + go install sigs.k8s.io/kubetest2/kubetest2-gke@0e09086b60c122e1084edd2368d3d27fe36f384f; + go install sigs.k8s.io/kubetest2/kubetest2-tester-ginkgo@0e09086b60c122e1084edd2368d3d27fe36f384f; fi base_cmd="${PKGDIR}/bin/k8s-integration-test \