mirror of
https://github.com/kyverno/policy-reporter.git
synced 2024-12-14 11:57:32 +00:00
aaa57b7ff9
Signed-off-by: Frank Jogeleit <frank.jogeleit@web.de>
208 lines
6.8 KiB
Makefile
208 lines
6.8 KiB
Makefile
############
|
|
# DEFAULTS #
|
|
############
|
|
|
|
KIND_IMAGE ?= kindest/node:v1.30.2
|
|
KIND_NAME ?= kyverno
|
|
USE_CONFIG ?= standard,no-ingress,in-cluster,all-read-rbac
|
|
KUBECONFIG ?= ""
|
|
PIP ?= "pip3"
|
|
GO ?= go
|
|
BUILD ?= build
|
|
IMAGE_TAG ?= 3.0.0
|
|
|
|
#############
|
|
# VARIABLES #
|
|
#############
|
|
|
|
GIT_SHA := $(shell git rev-parse HEAD)
|
|
TIMESTAMP := $(shell date '+%Y-%m-%d_%I:%M:%S%p')
|
|
GOOS ?= $(shell go env GOOS)
|
|
GOARCH ?= $(shell go env GOARCH)
|
|
REGISTRY ?= ghcr.io
|
|
OWNER ?= kyverno
|
|
KO_REGISTRY := ko.local
|
|
IMAGE ?= policy-reporter
|
|
LD_FLAGS := -s -w -linkmode external -extldflags "-static"
|
|
LOCAL_PLATFORM := linux/$(GOARCH)
|
|
PLATFORMS := linux/arm64,linux/amd64,linux/s390x
|
|
REPO := $(REGISTRY)/$(OWNER)/$(IMAGE)
|
|
COMMA := ,
|
|
|
|
ifndef VERSION
|
|
APP_VERSION := $(GIT_SHA)
|
|
else
|
|
APP_VERSION := $(VERSION)
|
|
endif
|
|
|
|
#########
|
|
# TOOLS #
|
|
#########
|
|
|
|
TOOLS_DIR := $(PWD)/.tools
|
|
KIND := $(TOOLS_DIR)/kind
|
|
KIND_VERSION := v0.24.0
|
|
KO := $(TOOLS_DIR)/ko
|
|
KO_VERSION := v0.15.1
|
|
HELM := $(TOOLS_DIR)/helm
|
|
HELM_VERSION := v3.10.1
|
|
HELM_DOCS := $(TOOLS_DIR)/helm-docs
|
|
HELM_DOCS_VERSION := v1.11.0
|
|
GCI := $(TOOLS_DIR)/gci
|
|
GCI_VERSION := v0.9.1
|
|
GOFUMPT := $(TOOLS_DIR)/gofumpt
|
|
GOFUMPT_VERSION := v0.4.0
|
|
TOOLS := $(HELM) $(HELM_DOCS) $(GCI) $(GOFUMPT)
|
|
|
|
$(HELM):
|
|
@echo Install helm... >&2
|
|
@GOBIN=$(TOOLS_DIR) go install helm.sh/helm/v3/cmd/helm@$(HELM_VERSION)
|
|
|
|
$(HELM_DOCS):
|
|
@echo Install helm-docs... >&2
|
|
@GOBIN=$(TOOLS_DIR) go install github.com/norwoodj/helm-docs/cmd/helm-docs@$(HELM_DOCS_VERSION)
|
|
|
|
$(GCI):
|
|
@echo Install gci... >&2
|
|
@GOBIN=$(TOOLS_DIR) go install github.com/daixiang0/gci@$(GCI_VERSION)
|
|
|
|
$(GOFUMPT):
|
|
@echo Install gofumpt... >&2
|
|
@GOBIN=$(TOOLS_DIR) go install mvdan.cc/gofumpt@$(GOFUMPT_VERSION)
|
|
|
|
$(KIND):
|
|
@echo Install kind... >&2
|
|
@GOBIN=$(TOOLS_DIR) go install sigs.k8s.io/kind@$(KIND_VERSION)
|
|
|
|
$(KO):
|
|
@echo Install ko... >&2
|
|
@GOBIN=$(TOOLS_DIR) go install github.com/google/ko@$(KO_VERSION)
|
|
|
|
.PHONY: gci
|
|
gci: $(GCI)
|
|
@echo "Running gci"
|
|
@$(GCI) write -s standard -s default -s "prefix(github.com/kyverno/policy-reporter)" .
|
|
|
|
.PHONY: gofumpt
|
|
gofumpt: $(GOFUMPT)
|
|
@echo "Running gofumpt"
|
|
@$(GOFUMPT) -w .
|
|
|
|
.PHONY: fmt
|
|
fmt: gci gofumpt
|
|
|
|
.PHONY: install-tools
|
|
install-tools: $(TOOLS) ## Install tools
|
|
|
|
.PHONY: clean-tools
|
|
clean-tools: ## Remove installed tools
|
|
@echo Clean tools... >&2
|
|
@rm -rf $(TOOLS_DIR)
|
|
|
|
########
|
|
# KIND #
|
|
########
|
|
|
|
.PHONY: kind-create-cluster
|
|
kind-create-cluster: $(KIND) ## Create kind cluster
|
|
@echo Create kind cluster... >&2
|
|
@$(KIND) create cluster --name $(KIND_NAME) --image $(KIND_IMAGE) --config ./scripts/kind.yaml
|
|
@kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml
|
|
@sleep 15
|
|
@kubectl wait --namespace ingress-nginx --for=condition=ready pod --selector=app.kubernetes.io/component=controller --timeout=90s
|
|
|
|
.PHONY: kind-delete-cluster
|
|
kind-delete-cluster: $(KIND) ## Delete kind cluster
|
|
@echo Delete kind cluster... >&2
|
|
@$(KIND) delete cluster --name $(KIND_NAME)
|
|
|
|
.PHONY: kind-load
|
|
kind-load: $(KIND) ko-build ## Build playground image and load it in kind cluster
|
|
@echo Load playground image... >&2
|
|
@$(KIND) load docker-image --name $(KIND_NAME) ko.local/github.com/kyverno/policy-reporter:$(GIT_SHA)
|
|
|
|
###########
|
|
# CODEGEN #
|
|
###########
|
|
|
|
.PHONY: codegen-static-manifests
|
|
codegen-static-manifests: $(HELM) ## Generate helm docs
|
|
@echo Generate static manifests... >&2
|
|
@$(HELM) template policy-reporter ./charts/policy-reporter \
|
|
--set static=true \
|
|
--set metrics.enabled=true \
|
|
--set rest.enabled=true \
|
|
-n policy-reporter \
|
|
--create-namespace > manifests/policy-reporter/install.yaml
|
|
@$(HELM) template policy-reporter ./charts/policy-reporter \
|
|
--set static=true \
|
|
--set metrics.enabled=true \
|
|
--set ui.enabled=true \
|
|
-n policy-reporter \
|
|
--create-namespace > manifests/policy-reporter-ui/install.yaml
|
|
@$(HELM) template policy-reporter ./charts/policy-reporter --set static=true \
|
|
--set metrics.enabled=true \
|
|
--set ui.enabled=true \
|
|
--set plugin.kyverno.enabled=true \
|
|
-n policy-reporter \
|
|
--create-namespace > manifests/policy-reporter-kyverno-ui/install.yaml
|
|
@$(HELM) template policy-reporter ./charts/policy-reporter \
|
|
--set static=true \
|
|
--set metrics.enabled=true \
|
|
--set ui.enabled=true \
|
|
--set plugin.kyverno.enabled=true \
|
|
--set replicaCount=2 \
|
|
--set ui.replicaCount=2 \
|
|
--set plugin.kyverno.replicaCount=2 \
|
|
-n policy-reporter \
|
|
--create-namespace > manifests/policy-reporter-kyverno-ui-ha/install.yaml
|
|
|
|
.PHONY: codegen-helm-docs
|
|
codegen-helm-docs: ## Generate helm docs
|
|
@echo Generate helm docs... >&2
|
|
@docker run -v ${PWD}/charts:/work -w /work jnorwood/helm-docs:v1.11.0 -s file
|
|
|
|
.PHONY: verify-helm-docs
|
|
verify-helm-docs: codegen-helm-docs ## Check Helm charts are up to date
|
|
@echo Checking helm charts are up to date... >&2
|
|
@git --no-pager diff -- charts
|
|
@echo 'If this test fails, it is because the git diff is non-empty after running "make codegen-helm-docs".' >&2
|
|
@echo 'To correct this, locally run "make codegen-helm-docs", commit the changes, and re-run tests.' >&2
|
|
@git diff --quiet --exit-code -- charts
|
|
|
|
all: build
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -rf $(BUILD)
|
|
|
|
.PHONY: prepare
|
|
prepare:
|
|
mkdir -p $(BUILD)
|
|
|
|
.PHONY: test
|
|
test:
|
|
go test -v ./... -timeout=10s
|
|
|
|
.PHONY: coverage
|
|
coverage:
|
|
go test -v ./... -covermode=count -coverprofile=coverage.out.tmp -timeout=30s
|
|
cat coverage.out.tmp | grep -v "github.com/kyverno/policy-reporter/cmd/" | grep -v "github.com/kyverno/policy-reporter/main.go" | grep -v "github.com/kyverno/policy-reporter/pkg/crd/" > coverage.out
|
|
rm coverage.out.tmp
|
|
|
|
.PHONY: build
|
|
build: prepare
|
|
CGO_ENABLED=1 $(GO) build -v -ldflags="-s -w" $(GOFLAGS) -o $(BUILD)/policyreporter .
|
|
|
|
.PHONY: docker-build
|
|
docker-build:
|
|
@docker buildx build --progress plane --platform $(PLATFORMS) --tag $(REPO):$(IMAGE_TAG) . --build-arg LD_FLAGS='$(LD_FLAGS) -X main.Version=$(IMAGE_TAG)'
|
|
|
|
.PHONY: docker-push
|
|
docker-push:
|
|
@docker buildx build --progress plane --platform $(PLATFORMS) --tag $(REPO):$(IMAGE_TAG) . --build-arg LD_FLAGS='$(LD_FLAGS) -X main.Version=$(IMAGE_TAG)' --push
|
|
@docker buildx build --progress plane --platform $(PLATFORMS) --tag $(REPO):latest . --build-arg LD_FLAGS='$(LD_FLAGS) -X main.Version=$(IMAGE_TAG)' --push
|
|
|
|
.PHONY: docker-push-dev
|
|
docker-push-dev:
|
|
@docker buildx build --progress plane --platform $(PLATFORMS) --tag $(REPO):dev . --build-arg LD_FLAGS='$(LD_FLAGS) -X main.Version=$(IMAGE_TAG)-dev' --push
|