@@ -104,32 +104,38 @@ operator-yaml: manifests kustomize
104104undeploy : # # Undeploy controller from the K8s cluster specified in ~/.kube/config.
105105 $(KUSTOMIZE ) build config/default | kubectl delete -f -
106106
107+ # #@ Build Dependencies
108+
109+ # # Location to install dependencies to
110+ LOCALBIN ?= $(shell pwd) /bin
111+ $(LOCALBIN ) :
112+ mkdir -p $(LOCALBIN )
113+
114+ # # Tool Binaries
115+ KUSTOMIZE ?= $(LOCALBIN ) /kustomize
116+ CONTROLLER_GEN ?= $(LOCALBIN ) /controller-gen
117+ ENVTEST ?= $(LOCALBIN ) /setup-envtest
118+
119+ # # Tool Versions
120+ KUSTOMIZE_VERSION ?= v3.8.7
121+ CONTROLLER_TOOLS_VERSION ?= v0.6.1
122+
123+ KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"
124+ .PHONY : kustomize
125+ kustomize : $(KUSTOMIZE ) # # Download kustomize locally if necessary.
126+ $(KUSTOMIZE ) : $(LOCALBIN )
127+ curl -s $(KUSTOMIZE_INSTALL_SCRIPT ) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION ) ) $(LOCALBIN )
128+
129+ .PHONY : controller-gen
130+ controller-gen : $(CONTROLLER_GEN ) # # Download controller-gen locally if necessary.
131+ $(CONTROLLER_GEN ) : $(LOCALBIN )
132+ GOBIN=$(LOCALBIN ) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION )
133+
134+ .PHONY : envtest
135+ envtest : $(ENVTEST ) # # Download envtest-setup locally if necessary.
136+ $(ENVTEST ) : $(LOCALBIN )
137+ GOBIN=$(LOCALBIN ) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest
107138
108- CONTROLLER_GEN = $(shell pwd) /bin/controller-gen
109- controller-gen : # # Download controller-gen locally if necessary.
110- $(call go-get-tool,$(CONTROLLER_GEN ) ,sigs.k8s.io/controller-tools/cmd/controller-gen@v0.6.1)
111-
112- KUSTOMIZE = $(shell pwd) /bin/kustomize
113- kustomize : # # Download kustomize locally if necessary.
114- $(call go-get-tool,$(KUSTOMIZE ) ,sigs.k8s.io/kustomize/kustomize/v3@v3.8.7)
115-
116- ENVTEST = $(shell pwd) /bin/setup-envtest
117- envtest : # # Download envtest-setup locally if necessary.
118- $(call go-get-tool,$(ENVTEST ) ,sigs.k8s.io/controller-runtime/tools/setup-envtest@latest)
119-
120- # go-get-tool will 'go get' any package $2 and install it to $1.
121- PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST ) ) ) )
122- define go-get-tool
123- @[ -f $(1 ) ] || { \
124- set -e ;\
125- TMP_DIR=$$(mktemp -d ) ;\
126- cd $$TMP_DIR ;\
127- go mod init tmp ;\
128- echo "Downloading $(2 ) " ;\
129- GOBIN=$(PROJECT_DIR ) /bin go get $(2 ) ;\
130- rm -rf $$TMP_DIR ;\
131- }
132- endef
133139
134140.PHONY : bundle
135141bundle : manifests kustomize # # Generate bundle manifests and metadata, then validate generated files.
@@ -186,3 +192,4 @@ catalog-build: opm ## Build a catalog image.
186192.PHONY : catalog-push
187193catalog-push : # # Push a catalog image.
188194 $(MAKE ) docker-push IMG=$(CATALOG_IMG )
195+
0 commit comments