ENVTEST_K8S_VERSION := 1.36.2 PROJECT_DIR := $(CURDIR) TMP_DIR := $(PROJECT_DIR)/tmp BIN_DIR := $(TMP_DIR)/bin KINDTEST_DIR := $(PROJECT_DIR)/kindtest CRD_OPTIONS ?= IMAGE_PREFIX := IMAGE_TAG := latest # Set the shell used to bash for better error handling. SHELL = /bin/bash .SHELLFLAGS = -e -o pipefail -c .PHONY: all all: help ##@ Basic .PHONY: help help: ## Display this help. @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) .PHONY: setup setup: ## Setup necessary tools. aqua i -l $(MAKE) -C kindtest setup .PHONY: clean clean: ## Clean files rm -rf $(TMP_DIR)/* ##@ Build .PHONY: manifests manifests: controller-gen $(CRD_OPTIONS) crd paths="./..." output:crd:artifacts:config=config/crd/bases controller-gen webhook paths="./..." output:stdout > config/controller/webhook.yaml controller-gen rbac:roleName=manager-role paths="./..." output:rbac:artifacts:config=config/controller .PHONY: generate generate: controller-gen object:headerFile="hack/boilerplate.go.txt" paths="./..." .PHONY: build build: ## Build all binaries. go build -o $(BIN_DIR)/ -trimpath ./cmd/controller go build -o $(BIN_DIR)/ -trimpath ./cmd/entrypoint go build -o $(BIN_DIR)/ -trimpath ./cmd/job-started go build -o $(BIN_DIR)/ -trimpath ./cmd/slack-agent go build -o $(BIN_DIR)/ -trimpath ./cmd/meows .PHONY: image image: ## Build controller container image. @TAKUMI_NETRC="$$(grep -sF 'machine golang.flatt.tech ' "$${NETRC:-$$HOME/.netrc}" || true)"; \ export TAKUMI_NETRC; \ docker build $${TAKUMI_NETRC:+--secret id=netrc,env=TAKUMI_NETRC} \ --target controller \ -t meows-controller:devel . .PHONY: tag tag: ## Tag controller container image. docker tag meows-controller:devel $(IMAGE_PREFIX)meows-controller:$(IMAGE_TAG) .PHONY: push push: ## Push controller container image. docker push $(IMAGE_PREFIX)meows-controller:$(IMAGE_TAG) ##@ Test .PHONY: lint lint: ## Run gofmt, staticcheck and vet. test -z "$$(gofmt -s -l . | tee /dev/stderr)" staticcheck ./... go vet ./... .PHONY: check-generate check-generate: ## Generate manifests and code, and check if diff exists. $(MAKE) manifests $(MAKE) generate git diff --exit-code --name-only .PHONY: test test: ## Run unit tests. source <(setup-envtest use -p env $(ENVTEST_K8S_VERSION)) \ && go test -v -count=1 ./... -coverprofile $(TMP_DIR)/cover.out