Просмотр исходного кода

test: allow skipping kubernetes provider rebuild in v2 e2e

Signed-off-by: Moritz Johner <beller.moritz@googlemail.com>
Moritz Johner 2 месяцев назад
Родитель
Сommit
fe61c8dc84
2 измененных файлов с 47 добавлено и 4 удалено
  1. 3 4
      e2e/Makefile
  2. 44 0
      e2e/makefile_test.go

+ 3 - 4
e2e/Makefile

@@ -6,6 +6,7 @@ KIND_IMG ?= kindest/node:v1.33.4@sha256:25a6018e48dfcaee478f4a59af81157a437f15e6
 KIND_CLUSTER_NAME ?= external-secrets
 KIND_CONTEXT ?= kind-$(KIND_CLUSTER_NAME)
 DOCKER_BUILD_ARGS     ?=
+SKIP_PROVIDER_KUBERNETES_BUILD ?= false
 
 export E2E_IMAGE_NAME ?= ghcr.io/external-secrets/external-secrets-e2e
 export GINKGO_LABELS ?= !managed && !v2
@@ -16,6 +17,7 @@ export GOMODCACHE ?= $(CURDIR)/.cache/go-mod
 
 export OCI_IMAGE_NAME = ghcr.io/external-secrets/external-secrets
 export IMAGE_NAME ?= $(OCI_IMAGE_NAME)
+TEST_V2_PROVIDER_KUBERNETES_BUILD_CMD = $(MAKE) -C ../ docker.build.provider.kubernetes VERSION=$(VERSION) ARCH=amd64 DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
 
 ifeq ($(shell git tag),)
 export VERSION ?= $(shell echo "v0.0.0-$$(git rev-list HEAD --count)-g$$(git describe --dirty --always)" | sed 's/-/./2' | sed 's/-/./2')
@@ -72,10 +74,7 @@ test.v2: start-kind e2e-image ## Run v2 e2e tests against current kube context
 		VERSION=$(VERSION) \
 		ARCH=amd64 \
 		DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
-	$(MAKE) -C ../ docker.build.provider.kubernetes \
-		VERSION=$(VERSION) \
-		ARCH=amd64 \
-		DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
+	$(if $(filter true,$(SKIP_PROVIDER_KUBERNETES_BUILD)),,$(TEST_V2_PROVIDER_KUBERNETES_BUILD_CMD))
 	$(MAKE) -C ../ docker.build.controller.e2e \
 		IMAGE_NAME=$(OCI_IMAGE_NAME) \
 		VERSION=$(VERSION) \

+ 44 - 0
e2e/makefile_test.go

@@ -0,0 +1,44 @@
+package e2e
+
+import (
+	"os"
+	"os/exec"
+	"strings"
+	"testing"
+)
+
+func TestV2MakeTargetCanSkipKubernetesProviderBuild(t *testing.T) {
+	t.Parallel()
+
+	defaultDryRun := runMakeDryRun(t, "VERSION=test-version")
+	if !strings.Contains(defaultDryRun, "docker.build.provider.kubernetes") {
+		t.Fatalf("expected default test.v2 dry-run to build the kubernetes provider image, output:\n%s", defaultDryRun)
+	}
+	if !strings.Contains(defaultDryRun, "ghcr.io/external-secrets/provider-kubernetes:test-version") {
+		t.Fatalf("expected default test.v2 dry-run to still load the kubernetes provider image, output:\n%s", defaultDryRun)
+	}
+
+	skippedDryRun := runMakeDryRun(t, "VERSION=test-version", "SKIP_PROVIDER_KUBERNETES_BUILD=true")
+	if strings.Contains(skippedDryRun, "docker.build.provider.kubernetes") {
+		t.Fatalf("expected skipped test.v2 dry-run to omit the kubernetes provider build, output:\n%s", skippedDryRun)
+	}
+	if !strings.Contains(skippedDryRun, "ghcr.io/external-secrets/provider-kubernetes:test-version") {
+		t.Fatalf("expected skipped test.v2 dry-run to still load the kubernetes provider image, output:\n%s", skippedDryRun)
+	}
+}
+
+func runMakeDryRun(t *testing.T, extraArgs ...string) string {
+	t.Helper()
+
+	args := append([]string{"-n", "test.v2"}, extraArgs...)
+	cmd := exec.Command("make", args...)
+	cmd.Dir = "."
+	cmd.Env = os.Environ()
+
+	output, err := cmd.CombinedOutput()
+	if err != nil {
+		t.Fatalf("make dry-run failed: %v\n%s", err, string(output))
+	}
+
+	return string(output)
+}