@@ -46,6 +46,10 @@ ifeq ($(USE_IMAGE_DIGESTS), true)
4646 BUNDLE_GEN_FLAGS += --use-image-digests
4747endif
4848
49+ # Set the Operator SDK version to use. By default, what is installed on the system is used.
50+ # This is useful for CI or a project to utilize a specific version of the operator-sdk toolkit.
51+ OPERATOR_SDK_VERSION ?= v1.31.0
52+
4953# Image URL to use all building/pushing image targets
5054DEFAULT_IMG ?= quay.io/openstack-k8s-operators/octavia-operator:latest
5155IMG ?= $(DEFAULT_IMG )
@@ -181,26 +185,48 @@ CONTROLLER_TOOLS_VERSION ?= v0.11.1
181185
182186KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"
183187.PHONY : kustomize
184- kustomize : $(KUSTOMIZE ) # # Download kustomize locally if necessary.
188+ kustomize : $(KUSTOMIZE ) # # Download kustomize locally if necessary. If wrong version is installed, it will be removed before downloading.
185189$(KUSTOMIZE ) : $(LOCALBIN )
186- test -s $(LOCALBIN ) /kustomize || { curl -s $( KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $( subst v,,$( KUSTOMIZE_VERSION) ) $( LOCALBIN) ; }
190+ @if test -x $(LOCALBIN ) /kustomize && ! $(LOCALBIN ) /kustomize version | grep -q $(KUSTOMIZE_VERSION ) ; then \
191+ echo " $( LOCALBIN) /kustomize version is not expected $( KUSTOMIZE_VERSION) . Removing it before installing." ; \
192+ rm -rf $(LOCALBIN ) /kustomize; \
193+ fi
194+ test -s $(LOCALBIN ) /kustomize || { curl -Ss $( KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $( subst v,,$( KUSTOMIZE_VERSION) ) $( LOCALBIN) ; }
187195
188196.PHONY : controller-gen
189- controller-gen : $(CONTROLLER_GEN ) # # Download controller-gen locally if necessary.
197+ controller-gen : $(CONTROLLER_GEN ) # # Download controller-gen locally if necessary. If wrong version is installed, it will be overwritten.
190198$(CONTROLLER_GEN ) : $(LOCALBIN )
191- test -s $(LOCALBIN ) /controller-gen || GOBIN=$(LOCALBIN ) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION )
199+ test -s $(LOCALBIN ) /controller-gen && $(LOCALBIN ) /controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION ) || \
200+ GOBIN=$(LOCALBIN ) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION )
192201
193202.PHONY : envtest
194203envtest : $(ENVTEST ) # # Download envtest-setup locally if necessary.
195204$(ENVTEST ) : $(LOCALBIN )
196205 test -s $(LOCALBIN ) /setup-envtest || GOBIN=$(LOCALBIN ) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest
197206
207+ .PHONY : operator-sdk
208+ OPERATOR_SDK ?= $(LOCALBIN ) /operator-sdk
209+ operator-sdk : # # Download operator-sdk locally if necessary.
210+ ifeq (,$(wildcard $(OPERATOR_SDK ) ) )
211+ ifeq (, $(shell which operator-sdk 2>/dev/null) )
212+ @{ \
213+ set -e ;\
214+ mkdir -p $(dir $(OPERATOR_SDK)) ;\
215+ OS=$(shell go env GOOS) && ARCH=$(shell go env GOARCH) && \
216+ curl -sSLo $(OPERATOR_SDK) https://github.com/operator-framework/operator-sdk/releases/download/$(OPERATOR_SDK_VERSION)/operator-sdk_$${OS}_$${ARCH} ;\
217+ chmod +x $(OPERATOR_SDK) ;\
218+ }
219+ else
220+ OPERATOR_SDK = $(shell which operator-sdk)
221+ endif
222+ endif
223+
198224.PHONY : bundle
199- bundle : manifests kustomize # # Generate bundle manifests and metadata, then validate generated files.
200- operator-sdk generate kustomize manifests -q
225+ bundle : manifests kustomize operator-sdk # # Generate bundle manifests and metadata, then validate generated files.
226+ $( OPERATOR_SDK ) generate kustomize manifests -q
201227 cd config/manager && $(KUSTOMIZE ) edit set image controller=$(IMG )
202- $(KUSTOMIZE ) build config/manifests | operator-sdk generate bundle $(BUNDLE_GEN_FLAGS )
203- operator-sdk bundle validate ./bundle
228+ $(KUSTOMIZE ) build config/manifests | $( OPERATOR_SDK ) generate bundle $(BUNDLE_GEN_FLAGS )
229+ $( OPERATOR_SDK ) bundle validate ./bundle
204230
205231.PHONY : bundle-build
206232bundle-build : # # Build the bundle image.
0 commit comments