@@ -37,19 +37,56 @@ export GOPRIVATE = github.com/microsoft
37
37
# Directories.
38
38
ROOT_DIR: =$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST ) ) ) )
39
39
TOOLS_DIR := hack/tools
40
- TOOLS_BIN_DIR := $(TOOLS_DIR ) /bin
40
+ TOOLS_BIN_DIR := $(abspath $( TOOLS_DIR ) /bin)
41
41
BIN_DIR := bin
42
42
43
+ # set --output-base used for conversion-gen which needs to be different for in GOPATH and outside GOPATH dev
44
+ OUTPUT_BASE := --output-base=$(ROOT_DIR )
45
+
46
+
43
47
# Binaries.
44
48
CLUSTERCTL := $(BIN_DIR ) /clusterctl
45
- CONTROLLER_GEN := $(TOOLS_BIN_DIR ) /controller-gen
46
- ENVSUBST := $(TOOLS_BIN_DIR ) /envsubst
47
- GOLANGCI_LINT := $(TOOLS_BIN_DIR ) /golangci-lint
48
- MOCKGEN := $(TOOLS_BIN_DIR ) /mockgen
49
- CONVERSION_GEN := $(TOOLS_BIN_DIR ) /conversion-gen
50
- KUBECTL =$(TOOLS_BIN_DIR ) /kubectl
51
49
KUBE_APISERVER =$(TOOLS_BIN_DIR ) /kube-apiserver
52
50
ETCD =$(TOOLS_BIN_DIR ) /etcd
51
+ GO_INSTALL = ./scripts/go_install.sh
52
+
53
+ # Binaries.
54
+ CONTROLLER_GEN_VER := v0.6.1
55
+ CONTROLLER_GEN_BIN := controller-gen
56
+ CONTROLLER_GEN := $(TOOLS_BIN_DIR ) /$(CONTROLLER_GEN_BIN ) -$(CONTROLLER_GEN_VER )
57
+
58
+ CONVERSION_GEN_VER := v0.20.2
59
+ CONVERSION_GEN_BIN := conversion-gen
60
+ CONVERSION_GEN := $(TOOLS_BIN_DIR ) /$(CONVERSION_GEN_BIN ) -$(CONVERSION_GEN_VER )
61
+
62
+
63
+ GOLANGCI_LINT_VER := v1.41.1
64
+ GOLANGCI_LINT_BIN := golangci-lint
65
+ GOLANGCI_LINT := $(TOOLS_BIN_DIR ) /$(GOLANGCI_LINT_BIN ) -$(GOLANGCI_LINT_VER )
66
+
67
+ KUSTOMIZE_VER := v4.1.3
68
+ KUSTOMIZE_BIN := kustomize
69
+ KUSTOMIZE := $(TOOLS_BIN_DIR ) /$(KUSTOMIZE_BIN ) -$(KUSTOMIZE_VER )
70
+
71
+ MOCKGEN_VER := v1.6.0
72
+ MOCKGEN_BIN := mockgen
73
+ MOCKGEN := $(TOOLS_BIN_DIR ) /$(MOCKGEN_BIN ) -$(MOCKGEN_VER )
74
+
75
+ RELEASE_NOTES_VER := v0.9.0
76
+ RELEASE_NOTES_BIN := release-notes
77
+ RELEASE_NOTES := $(TOOLS_BIN_DIR ) /$(RELEASE_NOTES_BIN ) -$(RELEASE_NOTES_VER )
78
+
79
+ GO_APIDIFF_VER := v0.1.0
80
+ GO_APIDIFF_BIN := go-apidiff
81
+ GO_APIDIFF := $(TOOLS_BIN_DIR ) /$(GO_APIDIFF_BIN )
82
+
83
+ GINKGO_VER := v1.16.4
84
+ GINKGO_BIN := ginkgo
85
+ GINKGO := $(TOOLS_BIN_DIR ) /$(GINKGO_BIN ) -$(GINKGO_VER )
86
+
87
+ KUBECTL_VER := v1.21.4
88
+ KUBECTL_BIN := kubectl
89
+ KUBECTL := $(TOOLS_BIN_DIR ) /$(KUBECTL_BIN ) -$(KUBECTL_VER )
53
90
54
91
TAGSUFFIX_APPEND :=
55
92
ifdef TAGSUFFIX
58
95
59
96
# Version
60
97
MAJOR_VER ?= 0
61
- MINOR_VER ?= 3
62
- PATCH_VER ?= 9 -alpha
98
+ MINOR_VER ?= 4
99
+ PATCH_VER ?= 0 -alpha
63
100
64
101
# Define Docker related variables. Releases should modify and double check these vars.
65
102
REGISTRY ?= mocimages.azurecr.io
@@ -134,20 +171,37 @@ manager: ## Build manager binary.
134
171
$(CLUSTERCTL ) : go.mod # # Build clusterctl binary.
135
172
go build -o $(BIN_DIR ) /clusterctl sigs.k8s.io/cluster-api/cmd/clusterctl
136
173
137
- $(CONTROLLER_GEN ) : $(TOOLS_DIR ) /go.mod # Build controller-gen from tools folder.
138
- cd $(TOOLS_DIR ) ; go build -tags=tools -o $(BIN_DIR ) /controller-gen sigs.k8s.io/controller-tools/cmd/controller-gen
174
+ $(CONTROLLER_GEN ) : # # Build controller-gen from tools folder.
175
+ GOBIN=$(TOOLS_BIN_DIR ) $(GO_INSTALL ) sigs.k8s.io/controller-tools/cmd/controller-gen $(CONTROLLER_GEN_BIN ) $(CONTROLLER_GEN_VER )
176
+
177
+ $(CONVERSION_GEN ) : # # Build conversion-gen.
178
+ GOBIN=$(TOOLS_BIN_DIR ) $(GO_INSTALL ) k8s.io/code-generator/cmd/conversion-gen $(CONVERSION_GEN_BIN ) $(CONVERSION_GEN_VER )
179
+
180
+ $(ENVSUBST ) : # # Build envsubst from tools folder.
181
+ rm -f $(TOOLS_BIN_DIR ) /$(ENVSUBST_BIN ) *
182
+ mkdir -p $(TOOLS_DIR ) && cd $(TOOLS_DIR ) && go build -tags=tools -o $(ENVSUBST ) github.com/drone/envsubst/v2/cmd/envsubst
183
+ ln -sf $(ENVSUBST ) $(TOOLS_BIN_DIR ) /$(ENVSUBST_BIN )
139
184
140
- $( ENVSUBST ) : $(TOOLS_DIR ) /go.mod # Build envsubst from tools folder.
141
- cd $(TOOLS_DIR ) ; go build -tags=tools -o $( BIN_DIR ) /envsubst github.com/a8m/envsubst/cmd/envsubst
185
+ .PHONY : $(ENVSUBST_BIN )
186
+ $( ENVSUBST_BIN ) : $(ENVSUBST ) # # Build envsubst from tools folder.
142
187
143
- $(GOLANGCI_LINT ) : $( TOOLS_DIR ) /go.mod # Build golangci-lint from tools folder.
144
- cd $( TOOLS_DIR ) ; go build -tags=tools -o $( BIN_DIR ) /golangci-lint github.com/golangci/golangci-lint/cmd/golangci-lint
188
+ $(GOLANGCI_LINT ) : # # Build golangci-lint from tools folder.
189
+ GOBIN= $( TOOLS_BIN_DIR ) $( GO_INSTALL ) github.com/golangci/golangci-lint/cmd/golangci-lint $( GOLANGCI_LINT_BIN ) $( GOLANGCI_LINT_VER )
145
190
146
- $(MOCKGEN ) : $( TOOLS_DIR ) /go.mod # Build mockgen from tools folder.
147
- cd $( TOOLS_DIR ) ; go build -tags=tools -o $( BIN_DIR ) /mockgen github.com/golang/mock/mockgen
191
+ $(KUSTOMIZE ) : # # Build kustomize from tools folder.
192
+ GOBIN= $( TOOLS_BIN_DIR ) $( GO_INSTALL ) sigs.k8s.io/kustomize/kustomize/v4 $( KUSTOMIZE_BIN ) $( KUSTOMIZE_VER )
148
193
149
- $(CONVERSION_GEN ) : $(TOOLS_DIR ) /go.mod
150
- cd $(TOOLS_DIR ) ; go build -tags=tools -o $(BIN_DIR ) /conversion-gen k8s.io/code-generator/cmd/conversion-gen
194
+ $(MOCKGEN ) : # # Build mockgen from tools folder.
195
+ GOBIN=$(TOOLS_BIN_DIR ) $(GO_INSTALL ) github.com/golang/mock/mockgen $(MOCKGEN_BIN ) $(MOCKGEN_VER )
196
+
197
+ $(RELEASE_NOTES ) : # # Build release notes.
198
+ GOBIN=$(TOOLS_BIN_DIR ) $(GO_INSTALL ) k8s.io/release/cmd/release-notes $(RELEASE_NOTES_BIN ) $(RELEASE_NOTES_VER )
199
+
200
+ $(GO_APIDIFF ) : # # Build go-apidiff.
201
+ GOBIN=$(TOOLS_BIN_DIR ) $(GO_INSTALL ) github.com/joelanford/go-apidiff $(GO_APIDIFF_BIN ) $(GO_APIDIFF_VER )
202
+
203
+ $(GINKGO ) : # # Build ginkgo.
204
+ GOBIN=$(TOOLS_BIN_DIR ) $(GO_INSTALL ) github.com/onsi/ginkgo/ginkgo $(GINKGO_BIN ) $(GINKGO_VER )
151
205
152
206
$(RELEASE_NOTES ) : $(TOOLS_DIR ) /go.mod
153
207
cd $(TOOLS_DIR ) && go build -tags tools -o $(BIN_DIR ) /release-notes sigs.k8s.io/cluster-api/hack/tools/release
@@ -187,14 +241,15 @@ generate-go: $(CONTROLLER_GEN) $(MOCKGEN) $(CONVERSION_GEN) ## Runs Go related g
187
241
188
242
$(CONVERSION_GEN) \
189
243
--input-dirs=./api/v1alpha3 \
190
- --output-file-base=zz_generated.conversion \
244
+ --output-file-base=zz_generated.conversion $(OUTPUT_BASE) \
191
245
--go-header-file=./hack/boilerplate/boilerplate.generatego.txt
192
-
246
+
193
247
.PHONY : generate-manifests
194
248
generate-manifests : $(CONTROLLER_GEN ) # # Generate manifests e.g. CRD, RBAC etc.
195
249
$(CONTROLLER_GEN ) \
196
250
paths=./api/... \
197
251
crd:crdVersions=v1 \
252
+ rbac:roleName=manager-role \
198
253
output:crd:dir=$(CRD_ROOT ) \
199
254
output:webhook:dir=$(WEBHOOK_ROOT ) \
200
255
webhook
@@ -261,12 +316,12 @@ docker-push-manifest: ## Push the fat manifest docker image.
261
316
.PHONY : set-manifest-image
262
317
set-manifest-image :
263
318
$(info Updating kustomize image patch file for manager resource)
264
- sed -i' ' -e ' s@image: .*@image: ' " ${MANIFEST_IMG} :$( MANIFEST_TAG) " ' @' ./config/manager /manager_image_patch.yaml
319
+ sed -i' ' -e ' s@image: .*@image: ' " ${MANIFEST_IMG} :$( MANIFEST_TAG) " ' @' ./config/default /manager_image_patch.yaml
265
320
266
321
.PHONY : set-manifest-pull-policy
267
322
set-manifest-pull-policy :
268
323
$(info Updating kustomize pull policy file for manager resource)
269
- sed -i' ' -e ' s@imagePullPolicy: .*@imagePullPolicy: ' " $( PULL_POLICY) " ' @' ./config/manager /manager_pull_policy.yaml
324
+ sed -i' ' -e ' s@imagePullPolicy: .*@imagePullPolicy: ' " $( PULL_POLICY) " ' @' ./config/default /manager_pull_policy.yaml
270
325
271
326
# # --------------------------------------
272
327
# # Release
@@ -291,7 +346,7 @@ release: clean-release ## Builds and push container images using the latest git
291
346
292
347
.PHONY : release-manifests
293
348
release-manifests : $(RELEASE_DIR ) # # Builds the manifests to publish with a release
294
- kustomize build config > $(RELEASE_DIR ) /infrastructure-components.yaml
349
+ kustomize build config/default > $(RELEASE_DIR ) /infrastructure-components.yaml
295
350
296
351
.PHONY : release-binary
297
352
release-binary : $(RELEASE_DIR )
0 commit comments