Makefile 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. MAKEFLAGS += --warn-undefined-variables
  2. SHELL := /usr/bin/env bash
  3. .SHELLFLAGS := -euo pipefail -c
  4. KIND_IMG ?= kindest/node:v1.33.4@sha256:25a6018e48dfcaee478f4a59af81157a437f15e6e140bf103f85a2e7cd0cbbf2
  5. KIND_CLUSTER_NAME ?= external-secrets
  6. KIND_CONTEXT ?= kind-$(KIND_CLUSTER_NAME)
  7. DOCKER_BUILD_ARGS ?=
  8. export E2E_IMAGE_NAME ?= ghcr.io/external-secrets/external-secrets-e2e
  9. export GINKGO_LABELS ?= !managed && !v2
  10. export V2_GINKGO_LABELS ?= v2
  11. export TEST_SUITES ?= provider generator flux argocd
  12. export GOCACHE ?= $(CURDIR)/.cache/go-build
  13. export GOMODCACHE ?= $(CURDIR)/.cache/go-mod
  14. export OCI_IMAGE_NAME = ghcr.io/external-secrets/external-secrets
  15. export IMAGE_NAME ?= $(OCI_IMAGE_NAME)
  16. ifeq ($(shell git tag),)
  17. export VERSION ?= $(shell echo "v0.0.0-$$(git rev-list HEAD --count)-g$$(git describe --dirty --always)" | sed 's/-/./2' | sed 's/-/./2')
  18. else
  19. export VERSION ?= $(shell git describe --dirty --always --tags --exclude 'helm*' | sed 's/-/./2' | sed 's/-/./2')
  20. endif
  21. start-kind: ## Start kind cluster
  22. @if kind get clusters | grep -qx "$(KIND_CLUSTER_NAME)"; then \
  23. kind export kubeconfig --name "$(KIND_CLUSTER_NAME)"; \
  24. if kubectl --context "$(KIND_CONTEXT)" --request-timeout=5s get --raw=/readyz >/dev/null 2>&1; then \
  25. echo "kind cluster $(KIND_CLUSTER_NAME) is ready"; \
  26. else \
  27. echo "kind cluster $(KIND_CLUSTER_NAME) exists but is unhealthy, recreating"; \
  28. kind delete cluster --name "$(KIND_CLUSTER_NAME)"; \
  29. kind create cluster \
  30. --name "$(KIND_CLUSTER_NAME)" \
  31. --config kind.yaml \
  32. --retain \
  33. --image "$(KIND_IMG)"; \
  34. fi; \
  35. else \
  36. kind create cluster \
  37. --name "$(KIND_CLUSTER_NAME)" \
  38. --config kind.yaml \
  39. --retain \
  40. --image "$(KIND_IMG)"; \
  41. fi
  42. kind export kubeconfig --name "$(KIND_CLUSTER_NAME)"
  43. stop-kind: ## Stop kind cluster
  44. kind delete cluster \
  45. --name "$(KIND_CLUSTER_NAME)" \
  46. test: start-kind e2e-image ## Run e2e tests against current kube context
  47. $(MAKE) -C ../ docker.build \
  48. IMAGE_NAME=$(IMAGE_NAME) \
  49. VERSION=$(VERSION) \
  50. ARCH=amd64 \
  51. DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
  52. $(MAKE) -C ../ docker.build \
  53. IMAGE_NAME=$(OCI_IMAGE_NAME) \
  54. VERSION=$(VERSION) \
  55. ARCH=amd64 \
  56. DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
  57. kind load docker-image --name="$(KIND_CLUSTER_NAME)" $(IMAGE_NAME):$(VERSION)
  58. kind load docker-image --name="$(KIND_CLUSTER_NAME)" $(OCI_IMAGE_NAME):$(VERSION)
  59. kind load docker-image --name="$(KIND_CLUSTER_NAME)" $(E2E_IMAGE_NAME):$(VERSION)
  60. KUBECTL_CONTEXT="$(KIND_CONTEXT)" ./run.sh
  61. test.v2: start-kind e2e-image ## Run v2 e2e tests against current kube context
  62. $(MAKE) -C ../ docker.build.controller.e2e \
  63. IMAGE_NAME=$(IMAGE_NAME) \
  64. VERSION=$(VERSION) \
  65. ARCH=amd64 \
  66. DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
  67. $(MAKE) -C ../ docker.build.provider.kubernetes \
  68. VERSION=$(VERSION) \
  69. ARCH=amd64 \
  70. DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
  71. $(MAKE) -C ../ docker.build.controller.e2e \
  72. IMAGE_NAME=$(OCI_IMAGE_NAME) \
  73. VERSION=$(VERSION) \
  74. ARCH=amd64 \
  75. DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
  76. kind load docker-image --name="$(KIND_CLUSTER_NAME)" $(IMAGE_NAME):$(VERSION)
  77. kind load docker-image --name="$(KIND_CLUSTER_NAME)" $(OCI_IMAGE_NAME):$(VERSION)
  78. kind load docker-image --name="$(KIND_CLUSTER_NAME)" $(E2E_IMAGE_NAME):$(VERSION)
  79. kind load docker-image --name="$(KIND_CLUSTER_NAME)" ghcr.io/external-secrets/provider-kubernetes:$(VERSION)
  80. KUBECTL_CONTEXT="$(KIND_CONTEXT)" GINKGO_LABELS="$(V2_GINKGO_LABELS)" E2E_PROVIDER_MODE="v2" TEST_SUITES="provider" ./run.sh
  81. test.managed: e2e-image ## Run e2e tests against current kube context
  82. $(MAKE) -C ../ docker.build \
  83. VERSION=$(VERSION) \
  84. ARCH=amd64 \
  85. DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
  86. $(MAKE) -C ../ docker.build \
  87. IMAGE_NAME=$(OCI_IMAGE_NAME) \
  88. VERSION=$(VERSION) \
  89. ARCH=amd64 \
  90. DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
  91. $(MAKE) -C ../ docker.push \
  92. VERSION=$(VERSION)
  93. $(MAKE) -C ../ docker.push \
  94. IMAGE_NAME=$(OCI_IMAGE_NAME) \
  95. VERSION=$(VERSION)
  96. $(MAKE) -C ../ docker.push \
  97. IMAGE_NAME=$(E2E_IMAGE_NAME) \
  98. VERSION=$(VERSION)
  99. ./run.sh
  100. e2e-bin: install-ginkgo
  101. CGO_ENABLED=0 ginkgo build ./suites/...
  102. e2e-image: e2e-bin
  103. -rm -rf ./k8s/deploy
  104. mkdir -p k8s
  105. $(MAKE) -C ../ helm.generate
  106. cp -r ../deploy ./k8s
  107. docker build $(DOCKER_BUILD_ARGS) -t $(E2E_IMAGE_NAME):$(VERSION) -f Dockerfile ..
  108. GINKGO_VERSION := $(shell grep 'github.com/onsi/ginkgo/v2' go.mod | awk '{print $$2}')
  109. install-ginkgo:
  110. @echo "Installing ginkgo version $(GINKGO_VERSION) from go.mod"
  111. go install github.com/onsi/ginkgo/v2/ginkgo@$(GINKGO_VERSION)
  112. help: ## displays this help message
  113. @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_\/-]+:.*?## / {printf "\033[34m%-18s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) | \
  114. sort | \
  115. grep -v '#'