From 361fb533a8786b3525d51e406cdfddce7d810475 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Charles-Edouard=20Br=C3=A9t=C3=A9ch=C3=A9?= Date: Tue, 30 Aug 2022 16:06:30 +0200 Subject: [PATCH] chore: fix workflows related to ko recent changes (#4441) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Charles-Edouard Brétéché Signed-off-by: Charles-Edouard Brétéché --- Makefile | 195 ++++++++++++++++++++++--------------------------------- 1 file changed, 78 insertions(+), 117 deletions(-) diff --git a/Makefile b/Makefile index 5c96141ec1..9f7b65debe 100644 --- a/Makefile +++ b/Makefile @@ -16,11 +16,6 @@ REPO=$(REGISTRY)/kyverno IMAGE_TAG_LATEST_DEV=$(shell git describe --match "[0-9].[0-9]-dev*" | cut -d '-' -f-2) IMAGE_TAG_DEV=$(GIT_VERSION_DEV) IMAGE_TAG?=$(GIT_VERSION) -ifeq ($(GOOS), darwin) -SED=gsed -else -SED=sed -endif K8S_VERSION ?= $(shell kubectl version --short | grep -i server | cut -d" " -f3 | cut -c2-) export K8S_VERSION TEST_GIT_BRANCH ?= main @@ -49,6 +44,11 @@ HELM_DOCS_VERSION := v1.6.0 KO := $(TOOLS_DIR)/ko KO_VERSION := v0.12.0 TOOLS := $(KIND) $(CONTROLLER_GEN) $(GEN_CRD_API_REFERENCE_DOCS) $(GO_ACC) $(KUSTOMIZE) $(GOIMPORTS) $(HELM_DOCS) $(KO) +ifeq ($(GOOS), darwin) +SED := gsed +else +SED := sed +endif $(KIND): @GOBIN=$(TOOLS_DIR) go install sigs.k8s.io/kind@$(KIND_VERSION) @@ -134,6 +134,8 @@ build-all: build-kyverno build-kyvernopre build-cli ## Build all INITC_KIND_IMAGE := ko.local/github.com/kyverno/kyverno/cmd/initcontainer KYVERNO_KIND_IMAGE := ko.local/github.com/kyverno/kyverno/cmd/kyverno INITC_IMAGE := kyvernopre +KYVERNO_IMAGE := kyverno +CLI_IMAGE := kyverno-cli KO_PLATFORM := linux/amd64,linux/arm64,linux/s390x REPO_KYVERNO := $(REPO)/kyverno REPO_KYVERNOPRE := $(REPO)/kyvernopre @@ -189,6 +191,74 @@ ko-build-all-dev: ko-build-initContainer-dev ko-build-kyverno-dev ko-build-cli-d .PHONY: ko-build-all-local ko-build-all-local: ko-build-initContainer-local ko-build-kyverno-local ko-build-cli-local +################## +# BUILD (DOCKER) # +################## + +.PHONY: docker-buildx-builder +docker-buildx-builder: + if ! docker buildx ls | grep -q kyverno; then\ + docker buildx create --name kyverno --use;\ + fi + +.PHONY: docker-build-initContainer +docker-build-initContainer: docker-buildx-builder + @docker buildx build --file $(KYVERNOPRE_DIR)/Dockerfile --progress plane --platform $(KO_PLATFORM) --tag $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG) . --build-arg LD_FLAGS=$(LD_FLAGS) + +.PHONY: docker-push-initContainer +docker-push-initContainer: docker-buildx-builder + @docker buildx build --file $(KYVERNOPRE_DIR)/Dockerfile --progress plane --push --platform $(KO_PLATFORM) --tag $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG) . --build-arg LD_FLAGS=$(LD_FLAGS) + +.PHONY: docker-push-initContainer-dev +docker-build-initContainer-dev: docker-buildx-builder + @docker buildx build --file $(KYVERNOPRE_DIR)/Dockerfile --progress plane --platform $(KO_PLATFORM) \ + --tag $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG_DEV) --tag $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG_LATEST_DEV)-latest --tag $(REPO)/$(INITC_IMAGE):latest \ + . --build-arg LD_FLAGS=$(LD_FLAGS_DEV) + +.PHONY: docker-push-initContainer-dev +docker-push-initContainer-dev: docker-buildx-builder + @docker buildx build --file $(KYVERNOPRE_DIR)/Dockerfile --progress plane --push --platform $(KO_PLATFORM) \ + --tag $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG_DEV) --tag $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG_LATEST_DEV)-latest --tag $(REPO)/$(INITC_IMAGE):latest \ + . --build-arg LD_FLAGS=$(LD_FLAGS_DEV) + +.PHONY: docker-build-kyverno +docker-build-kyverno: docker-buildx-builder + @docker buildx build --file $(KYVERNO_DIR)/Dockerfile --progress plane --platform $(KO_PLATFORM) --tag $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG) . --build-arg LD_FLAGS=$(LD_FLAGS) + +.PHONY: docker-push-kyverno +docker-push-kyverno: docker-buildx-builder + @docker buildx build --file $(KYVERNO_DIR)/Dockerfile --progress plane --push --platform $(KO_PLATFORM) --tag $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG) . --build-arg LD_FLAGS=$(LD_FLAGS) + +.PHONY: docker-push-kyverno-dev +docker-push-kyverno-dev: docker-buildx-builder + @docker buildx build --file $(KYVERNO_DIR)/Dockerfile --progress plane --push --platform $(KO_PLATFORM) \ + --tag $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG_DEV) --tag $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG_LATEST_DEV)-latest --tag $(REPO)/$(KYVERNO_IMAGE):latest \ + . --build-arg LD_FLAGS=$(LD_FLAGS_DEV) + +.PHONY: docker-build-cli +docker-build-cli: docker-buildx-builder + @docker buildx build --file $(CLI_DIR)/Dockerfile --progress plane --platform $(KO_PLATFORM) --tag $(REPO)/$(CLI_IMAGE):$(IMAGE_TAG) . --build-arg LD_FLAGS=$(LD_FLAGS) + +.PHONY: docker-push-cli +docker-push-cli: docker-buildx-builder + @docker buildx build --file $(CLI_DIR)/Dockerfile --progress plane --push --platform $(KO_PLATFORM) --tag $(REPO)/$(CLI_IMAGE):$(IMAGE_TAG) . --build-arg LD_FLAGS=$(LD_FLAGS) + +.PHONY: docker-get-initContainer-digest +docker-get-initContainer-digest: + @docker buildx imagetools inspect --raw $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG) | perl -pe 'chomp if eof' | openssl dgst -sha256 | sed 's/^.* //' + +.PHONY: docker-get-initContainer-digest-dev +docker-get-initContainer-digest-dev: + @docker buildx imagetools inspect --raw $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG_DEV) | perl -pe 'chomp if eof' | openssl dgst -sha256 | sed 's/^.* //' + +.PHONY: docker-get-kyverno-digest +docker-get-kyverno-digest: + @docker buildx imagetools inspect --raw $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG) | perl -pe 'chomp if eof' | openssl dgst -sha256 | sed 's/^.* //' + +.PHONY: docker-get-kyverno-digest-dev +docker-get-kyverno-digest-dev: + @docker buildx imagetools inspect --raw $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG_DEV) | perl -pe 'chomp if eof' | openssl dgst -sha256 | sed 's/^.* //' + ################################## # KYVERNO ################################## @@ -203,98 +273,6 @@ unused-package-check: echo "go mod tidy checking failed!"; echo "$${tidy}"; echo; \ fi -KYVERNO_PATH:= cmd/kyverno -build: kyverno -PWD := $(CURDIR) - -docker-buildx-builder: - if ! docker buildx ls | grep -q kyverno; then\ - docker buildx create --name kyverno --use;\ - fi - -################################## -# INIT CONTAINER -################################## - -INITC_PATH := cmd/initContainer -INITC_IMAGE := kyvernopre - -.PHONY: docker-build-initContainer docker-push-initContainer - -docker-build-initContainer: docker-buildx-builder - @docker buildx build --file $(PWD)/$(INITC_PATH)/Dockerfile --progress plane --platform linux/arm64,linux/amd64,linux/s390x --tag $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG) . --build-arg LD_FLAGS=$(LD_FLAGS) - -docker-push-initContainer: docker-buildx-builder - @docker buildx build --file $(PWD)/$(INITC_PATH)/Dockerfile --progress plane --push --platform linux/arm64,linux/amd64,linux/s390x --tag $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG) . --build-arg LD_FLAGS=$(LD_FLAGS) - -docker-get-initContainer-digest: - @docker buildx imagetools inspect --raw $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG) | perl -pe 'chomp if eof' | openssl dgst -sha256 | sed 's/^.* //' - -docker-build-initContainer-amd64: - @docker build -f $(PWD)/$(INITC_PATH)/Dockerfile -t $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG_DEV) . --build-arg LD_FLAGS=$(LD_FLAGS) --build-arg TARGETPLATFORM="linux/amd64" - @docker tag $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG_DEV) $(REPO)/$(INITC_IMAGE):latest - -docker-build-initContainer-local: - CGO_ENABLED=0 GOOS=linux go build -o $(PWD)/$(INITC_PATH)/kyvernopre -ldflags=$(LD_FLAGS_DEV) $(PWD)/$(INITC_PATH) - @docker build -f $(PWD)/$(INITC_PATH)/localDockerfile -t $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG_DEV) $(PWD)/$(INITC_PATH) - @docker tag $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG_DEV) $(REPO)/$(INITC_IMAGE):latest - -docker-publish-initContainer-dev: docker-buildx-builder docker-push-initContainer-dev - -docker-build-initContainer-dev: docker-buildx-builder - @docker buildx build --file $(PWD)/$(INITC_PATH)/Dockerfile --progress plane --platform linux/arm64,linux/amd64,linux/s390x --tag $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG_DEV) . --build-arg LD_FLAGS=$(LD_FLAGS_DEV) - @docker buildx build --file $(PWD)/$(INITC_PATH)/Dockerfile --progress plane --platform linux/arm64,linux/amd64,linux/s390x --tag $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG_LATEST_DEV)-latest . --build-arg LD_FLAGS=$(LD_FLAGS_DEV) - @docker buildx build --file $(PWD)/$(INITC_PATH)/Dockerfile --progress plane --platform linux/arm64,linux/amd64,linux/s390x --tag $(REPO)/$(INITC_IMAGE):latest . --build-arg LD_FLAGS=$(LD_FLAGS_DEV) - -docker-push-initContainer-dev: docker-buildx-builder - @docker buildx build --file $(PWD)/$(INITC_PATH)/Dockerfile --progress plane --push --platform linux/arm64,linux/amd64,linux/s390x --tag $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG_DEV) . --build-arg LD_FLAGS=$(LD_FLAGS_DEV) - @docker buildx build --file $(PWD)/$(INITC_PATH)/Dockerfile --progress plane --push --platform linux/arm64,linux/amd64,linux/s390x --tag $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG_LATEST_DEV)-latest . --build-arg LD_FLAGS=$(LD_FLAGS_DEV) - @docker buildx build --file $(PWD)/$(INITC_PATH)/Dockerfile --progress plane --push --platform linux/arm64,linux/amd64,linux/s390x --tag $(REPO)/$(INITC_IMAGE):latest . --build-arg LD_FLAGS=$(LD_FLAGS_DEV) - -docker-get-initContainer-digest-dev: - @docker buildx imagetools inspect --raw $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG_DEV) | perl -pe 'chomp if eof' | openssl dgst -sha256 | sed 's/^.* //' - -################################## -# KYVERNO CONTAINER -################################## - -KYVERNO_PATH := cmd/kyverno -KYVERNO_IMAGE := kyverno - -local: - go build -ldflags=$(LD_FLAGS) $(PWD)/$(KYVERNO_PATH) - go build -ldflags=$(LD_FLAGS) $(PWD)/$(CLI_PATH) - -docker-publish-kyverno: docker-buildx-builder docker-build-kyverno docker-push-kyverno - -docker-build-kyverno: docker-buildx-builder - @docker buildx build --file $(PWD)/$(KYVERNO_PATH)/Dockerfile --progress plane --platform linux/arm64,linux/amd64,linux/s390x --tag $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG) . --build-arg LD_FLAGS=$(LD_FLAGS) - -docker-build-kyverno-local: - CGO_ENABLED=0 GOOS=linux go build -o $(PWD)/$(KYVERNO_PATH)/kyverno -ldflags=$(LD_FLAGS_DEV) $(PWD)/$(KYVERNO_PATH) - @docker build -f $(PWD)/$(KYVERNO_PATH)/localDockerfile -t $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG_DEV) -t $(REPO)/$(KYVERNO_IMAGE):latest $(PWD)/$(KYVERNO_PATH) - @docker tag $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG_DEV) $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG_LATEST_DEV)-latest - -docker-build-kyverno-amd64: - @docker build -f $(PWD)/$(KYVERNO_PATH)/Dockerfile -t $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG_DEV) . --build-arg LD_FLAGS=$(LD_FLAGS) --build-arg TARGETPLATFORM="linux/amd64" - @docker tag $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG_DEV) $(REPO)/$(KYVERNO_IMAGE):latest - -docker-push-kyverno: docker-buildx-builder - @docker buildx build --file $(PWD)/$(KYVERNO_PATH)/Dockerfile --progress plane --push --platform linux/arm64,linux/amd64,linux/s390x --tag $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG) . --build-arg LD_FLAGS=$(LD_FLAGS) - -docker-get-kyverno-digest: - @docker buildx imagetools inspect --raw $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG) | perl -pe 'chomp if eof' | openssl dgst -sha256 | sed 's/^.* //' - -docker-publish-kyverno-dev: docker-buildx-builder docker-push-kyverno-dev - -docker-push-kyverno-dev: docker-buildx-builder - @docker buildx build --file $(PWD)/$(KYVERNO_PATH)/Dockerfile --progress plane --push --platform linux/arm64,linux/amd64,linux/s390x --tag $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG_DEV) . --build-arg LD_FLAGS=$(LD_FLAGS_DEV) - @docker buildx build --file $(PWD)/$(KYVERNO_PATH)/Dockerfile --progress plane --push --platform linux/arm64,linux/amd64,linux/s390x --tag $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG_LATEST_DEV)-latest . --build-arg LD_FLAGS=$(LD_FLAGS_DEV) - @docker buildx build --file $(PWD)/$(KYVERNO_PATH)/Dockerfile --progress plane --push --platform linux/arm64,linux/amd64,linux/s390x --tag $(REPO)/$(KYVERNO_IMAGE):latest . --build-arg LD_FLAGS=$(LD_FLAGS_DEV) - -docker-get-kyverno-digest-dev: - @docker buildx imagetools inspect --raw $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG_DEV) | perl -pe 'chomp if eof' | openssl dgst -sha256 | sed 's/^.* //' - ################################## # Generate Docs for types.go ################################## @@ -314,25 +292,6 @@ verify-api-docs: generate-api-docs ## Check api reference docs are up to date @echo 'To correct this, locally run "make generate-api-docs", commit the changes, and re-run tests.' git diff --quiet --exit-code docs -################################## -# CLI -################################## - -CLI_PATH := cmd/cli/kubectl-kyverno -KYVERNO_CLI_IMAGE := kyverno-cli - -docker-publish-cli: docker-buildx-builder docker-build-cli docker-push-cli - -docker-build-cli: docker-buildx-builder - @docker buildx build --file $(PWD)/$(CLI_PATH)/Dockerfile --progress plane --platform linux/arm64,linux/amd64,linux/s390x --tag $(REPO)/$(KYVERNO_CLI_IMAGE):$(IMAGE_TAG) . --build-arg LD_FLAGS=$(LD_FLAGS) - -docker-build-cli-amd64: - @docker build -f $(PWD)/$(CLI_PATH)/Dockerfile -t $(REPO)/$(KYVERNO_CLI_IMAGE):$(IMAGE_TAG_DEV) . --build-arg LD_FLAGS=$(LD_FLAGS) --build-arg TARGETPLATFORM="linux/amd64" - @docker tag $(REPO)/$(KYVERNO_CLI_IMAGE):$(IMAGE_TAG_DEV) $(REPO)/$(KYVERNO_CLI_IMAGE):latest - -docker-push-cli: docker-buildx-builder - @docker buildx build --file $(PWD)/$(CLI_PATH)/Dockerfile --progress plane --push --platform linux/arm64,linux/amd64,linux/s390x --tag $(REPO)/$(KYVERNO_CLI_IMAGE):$(IMAGE_TAG) . --build-arg LD_FLAGS=$(LD_FLAGS) - ################################## # Create e2e Infrastructure ################################## @@ -521,7 +480,9 @@ help: ## Shows the available commands @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' .PHONY: kind-deploy -kind-deploy: ko-build-initContainer-local ko-build-kyverno-local +kind-deploy: $(KIND) ko-build-initContainer-local ko-build-kyverno-local + $(KIND) load docker-image $(INITC_KIND_IMAGE):$(IMAGE_TAG_DEV) + $(KIND) load docker-image $(KYVERNO_KIND_IMAGE):$(IMAGE_TAG_DEV) helm upgrade --install kyverno --namespace kyverno --wait --create-namespace ./charts/kyverno \ --set image.repository=$(KYVERNO_KIND_IMAGE) \ --set image.tag=$(IMAGE_TAG_DEV) \