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

Prune host docker state before v2 e2e

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

+ 3 - 0
e2e/Makefile

@@ -88,6 +88,9 @@ endif
 	kind load docker-image --name="$(KIND_CLUSTER_NAME)" ghcr.io/external-secrets/provider-kubernetes:$(VERSION)
 	kind load docker-image --name="$(KIND_CLUSTER_NAME)" ghcr.io/external-secrets/provider-aws:$(VERSION)
 	kind load docker-image --name="$(KIND_CLUSTER_NAME)" ghcr.io/external-secrets/provider-fake:$(VERSION)
+ifeq ($(CI),true)
+	docker system prune --all --force --volumes
+endif
 	KUBECTL_CONTEXT="$(KIND_CONTEXT)" GINKGO_LABELS="$(V2_GINKGO_LABELS)" E2E_PROVIDER_MODE="v2" TEST_SUITES="provider" E2E_SKIP_HELM_DEPENDENCY_UPDATE="true" ./run.sh
 
 test.managed: e2e-image ## Run e2e tests against current kube context

+ 19 - 1
e2e/makefile_test.go

@@ -31,6 +31,7 @@ const (
 	helmDependencyEnsureCmd  = "../hack/helm.dependency.ensure.sh ../deploy/charts/external-secrets"
 	controllerImageLoadCount = `kind load docker-image --name="external-secrets" ghcr.io/external-secrets/external-secrets:test-version`
 	controllerImageBuildCmd  = "docker.build.controller.e2e"
+	dockerCleanupCmd         = "docker system prune --all --force --volumes"
 )
 
 func TestClassicMakeTargetBuildsOnlyControllerImageOnce(t *testing.T) {
@@ -92,6 +93,9 @@ func TestV2MakeTargetCanSkipKubernetesProviderBuild(t *testing.T) {
 	if !strings.Contains(defaultDryRun, helmDependencyEnsureCmd) {
 		t.Fatalf("expected default test.v2 dry-run to ensure helm dependencies before copying the chart, output:\n%s", defaultDryRun)
 	}
+	if strings.Contains(defaultDryRun, dockerCleanupCmd) {
+		t.Fatalf("expected default test.v2 dry-run to avoid CI-only docker cleanup, output:\n%s", defaultDryRun)
+	}
 
 	skippedDryRun := runMakeDryRun(t, "test.v2", testVersionArg, "SKIP_PROVIDER_KUBERNETES_BUILD=true")
 	if strings.Contains(skippedDryRun, kubernetesBuildTarget) {
@@ -120,8 +124,22 @@ func TestV2MakeTargetCanSkipKubernetesProviderBuild(t *testing.T) {
 	}
 }
 
+func TestV2MakeTargetPrunesDockerImagesInCI(t *testing.T) {
+	t.Parallel()
+
+	dryRun := runMakeDryRunWithEnv(t, []string{"CI=true"}, "test.v2", testVersionArg)
+	if count := strings.Count(dryRun, dockerCleanupCmd); count != 1 {
+		t.Fatalf("expected CI test.v2 dry-run to prune docker state once, got %d occurrences, output:\n%s", count, dryRun)
+	}
+}
+
 func runMakeDryRun(t *testing.T, target string, extraArgs ...string) string {
 	t.Helper()
+	return runMakeDryRunWithEnv(t, nil, target, extraArgs...)
+}
+
+func runMakeDryRunWithEnv(t *testing.T, extraEnv []string, target string, extraArgs ...string) string {
+	t.Helper()
 
 	args := append([]string{"-n", target}, extraArgs...)
 	cmd, err := frameworkutil.Command("make", args...)
@@ -129,7 +147,7 @@ func runMakeDryRun(t *testing.T, target string, extraArgs ...string) string {
 		t.Fatalf("resolve make: %v", err)
 	}
 	cmd.Dir = "."
-	cmd.Env = os.Environ()
+	cmd.Env = append(os.Environ(), extraEnv...)
 
 	output, err := cmd.CombinedOutput()
 	if err != nil {