@@ -75,6 +75,9 @@ TEST_CRDS := controllers/testdata/crds
75
75
# Log level for `make run`
76
76
LOG_LEVEL ?= info
77
77
78
+ # Architecture to use envtest with
79
+ ENVTEST_ARCH ?= amd64
80
+
78
81
all : manager
79
82
80
83
# Running the tests requires the source.toolkit.fluxcd.io CRDs
@@ -101,15 +104,18 @@ ${CACHE}/imagepolicies_${REFLECTOR_VER}.yaml:
101
104
curl -s --fail https://raw.githubusercontent.com/fluxcd/image-reflector-controller/${REFLECTOR_VER} /config/crd/bases/image.toolkit.fluxcd.io_imagepolicies.yaml \
102
105
-o ${CACHE} /imagepolicies_${REFLECTOR_VER} .yaml
103
106
104
- test : $(LIBGIT2 ) test-api test_deps generate fmt vet manifests api-docs # # Run tests
107
+ KUBEBUILDER_ASSETS? ="$(shell $(ENVTEST ) --arch=$(ENVTEST_ARCH ) use -i $(ENVTEST_KUBERNETES_VERSION ) --bin-dir=$(ENVTEST_ASSETS_DIR ) -p path) "
108
+ test : $(LIBGIT2 ) test-api test_deps generate fmt vet manifests api-docs install-envtest # # Run tests
105
109
ifeq ($(shell uname -s) ,Darwin)
106
110
LD_LIBRARY_PATH=$(LIBGIT2_LIB_PATH) \
107
111
PKG_CONFIG_PATH=$(MAKE_PKG_CONFIG_PATH) \
108
112
CGO_LDFLAGS="-Wl,-rpath,$(LIBGIT2_LIB_PATH)" \
113
+ KUBEBUILDER_ASSETS=$(KUBEBUILDER_ASSETS) \
109
114
go test ./... -coverprofile cover.out
110
115
else
111
116
LD_LIBRARY_PATH=$(LIBGIT2_LIB_PATH) \
112
117
PKG_CONFIG_PATH=$(MAKE_PKG_CONFIG_PATH) \
118
+ KUBEBUILDER_ASSETS=$(KUBEBUILDER_ASSETS) \
113
119
go test ./... -coverprofile cover.out
114
120
endif
115
121
@@ -130,7 +136,7 @@ endif
130
136
131
137
run : $(LIBGIT2 ) generate fmt vet manifests # Run against the configured Kubernetes cluster in ~/.kube/config
132
138
ifeq ($(shell uname -s) ,Darwin)
133
- CGO_LDFLAGS ="-Wl,-rpath,$(LIBGIT2_LIB_PATH ) " \
139
+ CGO_LDFLAGS="-Wl,-rpath,$(LIBGIT2_LIB_PATH)" \
134
140
go run ./main.go --log-level=${LOG_LEVEL} --log-encoding=console
135
141
else
136
142
go run ./main.go --log-level=${LOG_LEVEL} --log-encoding=console
@@ -196,35 +202,11 @@ docker-push: ## Push the Docker image
196
202
docker-deploy : # # Set the Docker image in-cluster
197
203
kubectl -n flux-system set image deployment/image-automation-controller manager=$(IMG ) :$(TAG )
198
204
199
- controller-gen : # # Find or download controller-gen
200
- ifeq (, $(shell which controller-gen) )
201
- @{ \
202
- set -e ;\
203
- CONTROLLER_GEN_TMP_DIR=$$(mktemp -d) ;\
204
- cd $$CONTROLLER_GEN_TMP_DIR ;\
205
- go mod init tmp ;\
206
- go get sigs.k8s.io/controller-tools/cmd/
[email protected] ;\
207
- rm -rf $$CONTROLLER_GEN_TMP_DIR ;\
208
- }
209
- CONTROLLER_GEN =$(GOBIN ) /controller-gen
210
- else
211
- CONTROLLER_GEN =$(shell which controller-gen)
212
- endif
213
-
214
- gen-crd-api-reference-docs : # # Find or download gen-crd-api-reference-docs
215
- ifeq (, $(shell which gen-crd-api-reference-docs) )
216
- @{ \
217
- set -e ;\
218
- API_REF_GEN_TMP_DIR=$$(mktemp -d) ;\
219
- cd $$API_REF_GEN_TMP_DIR ;\
220
- go mod init tmp ;\
221
- go get github.com/ahmetb/
[email protected] ;\
222
- rm -rf $$API_REF_GEN_TMP_DIR ;\
223
- }
224
- API_REF_GEN =$(GOBIN ) /gen-crd-api-reference-docs
225
- else
226
- API_REF_GEN =$(shell which gen-crd-api-reference-docs)
227
- endif
205
+ # Find or download controller-gen
206
+ CONTROLLER_GEN = $(shell pwd) /bin/controller-gen
207
+ .PHONY : controller-gen
208
+ controller-gen : # # Download controller-gen locally if necessary.
209
+ $(call go-install-tool,$(CONTROLLER_GEN ) ,sigs.k8s.io/controller-tools/cmd/[email protected] )
228
210
229
211
libgit2 : $(LIBGIT2 ) # # Detect or download libgit2 library
230
212
@@ -238,6 +220,37 @@ ifeq (1, $(LIBGIT2_FORCE))
238
220
}
239
221
endif
240
222
223
+ # Find or download gen-crd-api-reference-docs
224
+ GEN_CRD_API_REFERENCE_DOCS = $(shell pwd) /bin/gen-crd-api-reference-docs
225
+ .PHONY : gen-crd-api-reference-docs
226
+ gen-crd-api-reference-docs :
227
+ $(call go-install-tool,$(GEN_CRD_API_REFERENCE_DOCS ) ,github.com/ahmetb/[email protected] )
228
+
229
+ ENVTEST_ASSETS_DIR =$(shell pwd) /testbin
230
+ ENVTEST_KUBERNETES_VERSION? =latest
231
+ install-envtest : setup-envtest
232
+ mkdir -p ${ENVTEST_ASSETS_DIR}
233
+ $(ENVTEST ) use $(ENVTEST_KUBERNETES_VERSION ) --arch=$(ENVTEST_ARCH ) --bin-dir=$(ENVTEST_ASSETS_DIR )
234
+
235
+ ENVTEST = $(shell pwd) /bin/setup-envtest
236
+ .PHONY : envtest
237
+ setup-envtest : # # Download envtest-setup locally if necessary.
238
+ $(call go-install-tool,$(ENVTEST ) ,sigs.k8s.io/controller-runtime/tools/setup-envtest@latest)
239
+
240
+ # go-install-tool will 'go install' any package $2 and install it to $1.
241
+ PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST ) ) ) )
242
+ define go-install-tool
243
+ @[ -f $(1 ) ] || { \
244
+ set -e ;\
245
+ TMP_DIR=$$(mktemp -d ) ;\
246
+ cd $$TMP_DIR ;\
247
+ go mod init tmp ;\
248
+ echo "Downloading $(2 ) " ;\
249
+ GOBIN=$(PROJECT_DIR ) /bin go install $(2 ) ;\
250
+ rm -rf $$TMP_DIR ;\
251
+ }
252
+ endef
253
+
241
254
.PHONY : help
242
255
help : # # Display this help menu
243
256
@awk ' BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-20s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST )
0 commit comments