Ctrl K
ComunidadGuías…

Makefile

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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<target>\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