Makefile 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. DOCKER_BUILD_ARGS ?=
  6. export E2E_IMAGE_NAME ?= ghcr.io/external-secrets/external-secrets-e2e
  7. export GINKGO_LABELS ?= !managed
  8. export TEST_SUITES ?= provider generator flux argocd
  9. export OCI_IMAGE_NAME = ghcr.io/external-secrets/external-secrets
  10. # Directory where test.build writes the docker-saved image tarballs and where
  11. # test.run loads them from. Lets CI hand images between a build job and a
  12. # separate test job as artifacts instead of rebuilding on the test runner.
  13. E2E_ARTIFACT_DIR ?= $(shell pwd)/image-artifacts
  14. start-kind: ## Start kind cluster
  15. kind create cluster \
  16. --name external-secrets \
  17. --config kind.yaml \
  18. --retain \
  19. --image "$(KIND_IMG)"
  20. stop-kind: ## Stop kind cluster
  21. kind delete cluster \
  22. --name external-secrets \
  23. test: ## Build images and run the e2e suite on the current runner (local convenience)
  24. $(MAKE) test.build
  25. $(MAKE) test.run
  26. test.build: e2e-image ## Build the e2e + controller images and export them as tarballs
  27. $(MAKE) -C ../ docker.build \
  28. IMAGE_NAME=$(OCI_IMAGE_NAME) \
  29. VERSION=$(VERSION) \
  30. ARCH=amd64 \
  31. DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
  32. mkdir -p $(E2E_ARTIFACT_DIR)
  33. docker save -o $(E2E_ARTIFACT_DIR)/eso.tar $(OCI_IMAGE_NAME):$(VERSION)
  34. docker save -o $(E2E_ARTIFACT_DIR)/e2e.tar $(E2E_IMAGE_NAME):$(VERSION)
  35. test.run: ## Load prebuilt image tarballs into kind and run the e2e suite
  36. kind load image-archive --name="external-secrets" $(E2E_ARTIFACT_DIR)/eso.tar
  37. kind load image-archive --name="external-secrets" $(E2E_ARTIFACT_DIR)/e2e.tar
  38. ./run.sh
  39. test.managed: e2e-image ## Run e2e tests against current kube context
  40. $(MAKE) -C ../ docker.build \
  41. VERSION=$(VERSION) \
  42. ARCH=amd64 \
  43. DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
  44. $(MAKE) -C ../ docker.build \
  45. IMAGE_NAME=$(OCI_IMAGE_NAME) \
  46. VERSION=$(VERSION) \
  47. ARCH=amd64 \
  48. DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
  49. $(MAKE) -C ../ docker.push \
  50. VERSION=$(VERSION)
  51. $(MAKE) -C ../ docker.push \
  52. IMAGE_NAME=$(OCI_IMAGE_NAME) \
  53. VERSION=$(VERSION)
  54. $(MAKE) -C ../ docker.push \
  55. IMAGE_NAME=$(E2E_IMAGE_NAME) \
  56. VERSION=$(VERSION)
  57. ./run.sh
  58. e2e-bin: install-ginkgo
  59. CGO_ENABLED=0 ginkgo build ./suites/...
  60. e2e-image: e2e-bin
  61. -rm -rf ./k8s/deploy
  62. mkdir -p k8s
  63. $(MAKE) -C ../ helm.generate
  64. cp -r ../deploy ./k8s
  65. docker build $(DOCKER_BUILD_ARGS) -t $(E2E_IMAGE_NAME):$(VERSION) -f Dockerfile ..
  66. GINKGO_VERSION := $(shell grep 'github.com/onsi/ginkgo/v2' go.mod | awk '{print $$2}')
  67. install-ginkgo:
  68. @echo "Installing ginkgo version $(GINKGO_VERSION) from go.mod"
  69. go install github.com/onsi/ginkgo/v2/ginkgo@$(GINKGO_VERSION)
  70. help: ## displays this help message
  71. @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_\/-]+:.*?## / {printf "\033[34m%-18s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) | \
  72. sort | \
  73. grep -v '#'