-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
122 lines (97 loc) · 3.16 KB
/
Makefile
File metadata and controls
122 lines (97 loc) · 3.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
MODULE := github.com/alcounit/browser-controller
APIS_PKG := apis
GROUP := selenosis
BROWSER := browser
BROWSERCONFIG := browserconfig
API_VERSION := v1
BOILERPLATE := hack/boilerplate.go.txt
PROJECT_PKG := $(MODULE)/pkg
LISTER_PKG := $(MODULE)/pkg/listers
INFORMER_PKG := $(MODULE)/pkg/informers
CONTROLLER_GEN := $(shell which controller-gen)
CLIENT_GEN := $(shell which client-gen)
LISTER_GEN := $(shell which lister-gen)
INFORMER_GEN := $(shell which informer-gen)
BINARY_NAME := browser-controller
REGISTRY ?= localhost:5000
IMAGE_NAME := $(REGISTRY)/$(BINARY_NAME)
VERSION ?= develop
EXTRA_TAGS ?=
PLATFORM ?= linux/amd64
CONTAINER_TOOL ?= docker
.PHONY: all generate deepcopy client lister informer manifests install-tools verify clean fmt vet tidy test docker-build docker-push deploy install help show-vars
all: generate manifests
install-tools:
@go install k8s.io/code-generator/cmd/{deepcopy-gen,client-gen,lister-gen,informer-gen}@latest
@go install sigs.k8s.io/controller-tools/cmd/controller-gen@latest
generate: deepcopy client lister informer
fmt:
go fmt ./...
vet:
go vet ./...
tidy:
go mod tidy
test:
go test -race -count=1 -cover ./...
deepcopy:
@$(CONTROLLER_GEN) \
object:headerFile=$(BOILERPLATE) \
crd:crdVersions=v1 \
rbac:roleName=manager-role \
paths="./apis/..."
client:
@$(CLIENT_GEN) \
--clientset-name clientset \
--input-base "$(MODULE)/apis" \
--input $(BROWSER)/$(API_VERSION),$(BROWSERCONFIG)/$(API_VERSION) \
--output-pkg $(PROJECT_PKG) \
--output-dir ./pkg \
--go-header-file $(BOILERPLATE)
lister:
@$(LISTER_GEN) \
--output-pkg $(LISTER_PKG) \
--output-dir ./pkg/listers \
--go-header-file $(BOILERPLATE) \
$(MODULE)/$(APIS_PKG)/$(BROWSER)/$(API_VERSION) $(MODULE)/$(APIS_PKG)/$(BROWSERCONFIG)/$(API_VERSION)
informer:
@$(INFORMER_GEN) \
--versioned-clientset-package $(PROJECT_PKG)/clientset \
--listers-package $(LISTER_PKG) \
--output-pkg $(INFORMER_PKG) \
--output-dir ./pkg/informers \
--go-header-file $(BOILERPLATE) \
$(MODULE)/$(APIS_PKG)/$(BROWSER)/$(API_VERSION) $(MODULE)/$(APIS_PKG)/$(BROWSERCONFIG)/$(API_VERSION)
manifests:
@$(CONTROLLER_GEN) \
crd:maxDescLen=0 \
rbac:roleName=browser-controller \
paths="$(MODULE)/..." \
output:crd:artifacts:config=config/crd \
output:rbac:artifacts:config=config/rbac
verify:
@git diff --exit-code || (echo "Generated code is out of date. Run 'make generate'." && exit 1)
docker-build: manifests generate tidy fmt vet test
$(CONTAINER_TOOL) buildx build \
--platform $(PLATFORM) \
-t $(IMAGE_NAME):$(VERSION) \
--load \
.
docker-push: manifests generate tidy fmt vet
$(CONTAINER_TOOL) buildx build \
--platform $(PLATFORM) \
-t $(IMAGE_NAME):$(VERSION) \
$(EXTRA_TAGS) \
--push \
.
deploy: docker-push
clean:
$(CONTAINER_TOOL) rmi $(IMAGE_NAME):$(VERSION) 2>/dev/null || true
show-vars:
@echo "BINARY_NAME: $(BINARY_NAME)"
@echo "REGISTRY: $(REGISTRY)"
@echo "IMAGE_NAME: $(IMAGE_NAME)"
@echo "VERSION: $(VERSION)"
@echo "PLATFORM: $(PLATFORM)"
@echo "CONTAINER_TOOL: $(CONTAINER_TOOL)"
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'