From 73bcc99a5e67dc7c34d9db1b3458a9bbefea4621 Mon Sep 17 00:00:00 2001 From: Amir Alavi Date: Mon, 10 Aug 2026 09:56:48 -0400 Subject: [PATCH] refactor(e2e): centralize kubevirt version from go.mod Derive KUBEVIRT_VERSION in run-e2e-tests.sh from go.mod and pass it to e2e tests via --kubevirt-version-tag so container disk images stay in sync. --- test/e2e/e2e_evictioninbackground_test.go | 6 +++++- test/e2e/e2e_test.go | 11 ++++++++--- test/run-e2e-tests.sh | 4 ++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/test/e2e/e2e_evictioninbackground_test.go b/test/e2e/e2e_evictioninbackground_test.go index 37c01802f..3b8173a2b 100644 --- a/test/e2e/e2e_evictioninbackground_test.go +++ b/test/e2e/e2e_evictioninbackground_test.go @@ -77,7 +77,7 @@ func virtualMachineInstance(idx int, namespace string) *kvcorev1.VirtualMachineI Name: "containerdisk", VolumeSource: kvcorev1.VolumeSource{ ContainerDisk: &kvcorev1.ContainerDiskSource{ - Image: "quay.io/kubevirt/cirros-container-disk-demo:v1.9.0", + Image: kubevirtCirrosContainerDiskImage(), }, }, }, @@ -484,6 +484,10 @@ func waitForVMIEvictionsWithNoLimits(t *testing.T, ctx context.Context, kubeClie } func TestLiveMigrationInBackground(t *testing.T) { + if *kubevirtVersionTag == "" { + t.Fatal("--kubevirt-version-tag must be set for KubeVirt e2e tests") + } + initPluginRegistry() ctx := context.Background() diff --git a/test/e2e/e2e_test.go b/test/e2e/e2e_test.go index 2f161fd08..d65415fb2 100644 --- a/test/e2e/e2e_test.go +++ b/test/e2e/e2e_test.go @@ -68,11 +68,16 @@ import ( ) var ( - deschedulerImage = flag.String("descheduler-image", "", "descheduler image to set in the pod spec") - podRunAsUserId = flag.Int64("pod-run-as-user-id", 0, ".spec.securityContext.runAsUser setting, not set if 0") - podRunAsGroupId = flag.Int64("pod-run-as-group-id", 0, ".spec.securityContext.runAsGroup setting, not set if 0") + deschedulerImage = flag.String("descheduler-image", "", "descheduler image to set in the pod spec") + kubevirtVersionTag = flag.String("kubevirt-version-tag", "", "KubeVirt release tag for container disk images in KubeVirt e2e tests (e.g. v1.9.0)") + podRunAsUserId = flag.Int64("pod-run-as-user-id", 0, ".spec.securityContext.runAsUser setting, not set if 0") + podRunAsGroupId = flag.Int64("pod-run-as-group-id", 0, ".spec.securityContext.runAsGroup setting, not set if 0") ) +func kubevirtCirrosContainerDiskImage() string { + return fmt.Sprintf("quay.io/kubevirt/cirros-container-disk-demo:%s", *kubevirtVersionTag) +} + func TestMain(m *testing.M) { flag.Parse() diff --git a/test/run-e2e-tests.sh b/test/run-e2e-tests.sh index a04c61618..3bc0a733b 100755 --- a/test/run-e2e-tests.sh +++ b/test/run-e2e-tests.sh @@ -27,12 +27,12 @@ KIND_VERSION=${KIND_VERSION:-v0.31.0} SKIP_KUBECTL_INSTALL=${SKIP_KUBECTL_INSTALL:-} SKIP_KIND_INSTALL=${SKIP_KIND_INSTALL:-} SKIP_KUBEVIRT_INSTALL=${SKIP_KUBEVIRT_INSTALL:-} -KUBEVIRT_VERSION=${KUBEVIRT_VERSION:-v1.9.0} K8S_VERSION=${KUBERNETES_VERSION:-} # Build a descheduler image IMAGE_TAG=v$(date +%Y%m%d)-$(git describe --tags) BASEDIR=$(dirname "$0") +KUBEVIRT_VERSION=${KUBEVIRT_VERSION:-$(grep 'kubevirt.io/api ' "${BASEDIR}/../go.mod" | awk '{print $2}')} VERSION="${IMAGE_TAG}" make -C ${BASEDIR}/.. image export DESCHEDULER_IMAGE="docker.io/library/descheduler:${IMAGE_TAG}" @@ -115,4 +115,4 @@ kubectl patch -n kube-system deployment metrics-server --type=json \ kubectl wait --timeout=180s --for=condition=Available -n kube-system deployment/metrics-server PRJ_PREFIX="sigs.k8s.io/descheduler" -go test ${PRJ_PREFIX}/test/e2e/ -v -timeout 0 --args --descheduler-image ${DESCHEDULER_IMAGE} --pod-run-as-user-id 1000 --pod-run-as-group-id 1000 +go test ${PRJ_PREFIX}/test/e2e/ -v -timeout 0 --args --descheduler-image ${DESCHEDULER_IMAGE} --kubevirt-version-tag ${KUBEVIRT_VERSION} --pod-run-as-user-id 1000 --pod-run-as-group-id 1000