| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- MAKEFLAGS += --warn-undefined-variables
- SHELL := /usr/bin/env bash
- .SHELLFLAGS := -euo pipefail -c
- KIND_IMG ?= kindest/node:v1.33.4@sha256:25a6018e48dfcaee478f4a59af81157a437f15e6e140bf103f85a2e7cd0cbbf2
- 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
- export V2_GINKGO_LABELS ?= !managed && v2
- export TEST_SUITES ?= provider generator flux argocd
- export V2_TEST_SUITES ?= provider
- export GOCACHE ?= $(CURDIR)/.cache/go-build
- 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"
- TEST_V2_PROVIDER_AWS_BUILD_CMD = $(MAKE) -C ../ docker.build.provider.aws VERSION=$(VERSION) ARCH=amd64 DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
- TEST_V2_PROVIDER_FAKE_BUILD_CMD = $(MAKE) -C ../ docker.build.provider.fake 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')
- else
- export VERSION ?= $(shell git describe --dirty --always --tags --exclude 'helm*' | sed 's/-/./2' | sed 's/-/./2')
- endif
- start-kind: ## Start kind cluster
- @if kind get clusters | grep -qx "$(KIND_CLUSTER_NAME)"; then \
- kind export kubeconfig --name "$(KIND_CLUSTER_NAME)"; \
- if kubectl --context "$(KIND_CONTEXT)" --request-timeout=5s get --raw=/readyz >/dev/null 2>&1; then \
- echo "kind cluster $(KIND_CLUSTER_NAME) is ready"; \
- else \
- echo "kind cluster $(KIND_CLUSTER_NAME) exists but is unhealthy, recreating"; \
- kind delete cluster --name "$(KIND_CLUSTER_NAME)"; \
- kind create cluster \
- --name "$(KIND_CLUSTER_NAME)" \
- --config kind.yaml \
- --retain \
- --image "$(KIND_IMG)"; \
- fi; \
- else \
- kind create cluster \
- --name "$(KIND_CLUSTER_NAME)" \
- --config kind.yaml \
- --retain \
- --image "$(KIND_IMG)"; \
- fi
- kind export kubeconfig --name "$(KIND_CLUSTER_NAME)"
- stop-kind: ## Stop kind cluster
- kind delete cluster \
- --name "$(KIND_CLUSTER_NAME)" \
- test: start-kind e2e-image ## Run e2e tests against current kube context
- $(MAKE) -C ../ docker.build.controller.e2e \
- IMAGE_NAME=$(OCI_IMAGE_NAME) \
- VERSION=$(VERSION) \
- ARCH=amd64 \
- DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
- kind load docker-image --name="$(KIND_CLUSTER_NAME)" $(OCI_IMAGE_NAME):$(VERSION)
- kind load docker-image --name="$(KIND_CLUSTER_NAME)" $(E2E_IMAGE_NAME):$(VERSION)
- KUBECTL_CONTEXT="$(KIND_CONTEXT)" E2E_SKIP_HELM_DEPENDENCY_UPDATE="true" ./run.sh
- test.v2: start-kind e2e-image ## Run v2 e2e tests against current kube context
- $(MAKE) -C ../ docker.build.controller.e2e \
- IMAGE_NAME=$(IMAGE_NAME) \
- 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))
- $(TEST_V2_PROVIDER_AWS_BUILD_CMD)
- $(TEST_V2_PROVIDER_FAKE_BUILD_CMD)
- ifneq ($(IMAGE_NAME),$(OCI_IMAGE_NAME))
- $(MAKE) -C ../ docker.build.controller.e2e \
- IMAGE_NAME=$(OCI_IMAGE_NAME) \
- VERSION=$(VERSION) \
- ARCH=amd64 \
- DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
- endif
- kind load docker-image --name="$(KIND_CLUSTER_NAME)" $(IMAGE_NAME):$(VERSION)
- ifneq ($(IMAGE_NAME),$(OCI_IMAGE_NAME))
- kind load docker-image --name="$(KIND_CLUSTER_NAME)" $(OCI_IMAGE_NAME):$(VERSION)
- endif
- kind load docker-image --name="$(KIND_CLUSTER_NAME)" $(E2E_IMAGE_NAME):$(VERSION)
- 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="$(V2_TEST_SUITES)" E2E_SKIP_HELM_DEPENDENCY_UPDATE="true" ./run.sh
- test.v2.operational: ## Run focused operational v2 e2e tests
- $(MAKE) test.v2 V2_GINKGO_LABELS='v2 && operational && fake' V2_TEST_SUITES='provider'
- test.managed: e2e-image ## Run e2e tests against current kube context
- $(MAKE) -C ../ docker.build \
- VERSION=$(VERSION) \
- ARCH=amd64 \
- DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
- $(MAKE) -C ../ docker.build \
- IMAGE_NAME=$(OCI_IMAGE_NAME) \
- VERSION=$(VERSION) \
- ARCH=amd64 \
- DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
- $(MAKE) -C ../ docker.push \
- VERSION=$(VERSION)
- $(MAKE) -C ../ docker.push \
- IMAGE_NAME=$(OCI_IMAGE_NAME) \
- VERSION=$(VERSION)
- $(MAKE) -C ../ docker.push \
- IMAGE_NAME=$(E2E_IMAGE_NAME) \
- VERSION=$(VERSION)
- E2E_SKIP_HELM_DEPENDENCY_UPDATE="true" ./run.sh
- e2e-bin: install-ginkgo
- GOWORK=off CGO_ENABLED=0 ginkgo build ./suites/...
- e2e-image: e2e-bin
- -rm -rf ./k8s/deploy
- mkdir -p k8s
- $(MAKE) -C ../ helm.generate
- helm dependency build ../deploy/charts/external-secrets
- cp -r ../deploy ./k8s
- docker build $(DOCKER_BUILD_ARGS) -t $(E2E_IMAGE_NAME):$(VERSION) -f Dockerfile ..
- GINKGO_VERSION := $(shell grep 'github.com/onsi/ginkgo/v2' go.mod | awk '{print $$2}')
- install-ginkgo:
- @echo "Installing ginkgo version $(GINKGO_VERSION) from go.mod"
- GOWORK=off go install github.com/onsi/ginkgo/v2/ginkgo@$(GINKGO_VERSION)
- help: ## displays this help message
- @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_\/-]+:.*?## / {printf "\033[34m%-18s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) | \
- sort | \
- grep -v '#'
|