Skip to content

Commit e92898a

Browse files
Merge pull request #212 from yazug/standardize_makefile
update operator-sdk to use local/bin
2 parents 941aa4c + f330bb3 commit e92898a

File tree

1 file changed

+34
-8
lines changed

1 file changed

+34
-8
lines changed

Makefile

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ ifeq ($(USE_IMAGE_DIGESTS), true)
4646
BUNDLE_GEN_FLAGS += --use-image-digests
4747
endif
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
5054
DEFAULT_IMG ?= quay.io/openstack-k8s-operators/octavia-operator:latest
5155
IMG ?= $(DEFAULT_IMG)
@@ -181,26 +185,48 @@ CONTROLLER_TOOLS_VERSION ?= v0.11.1
181185

182186
KUSTOMIZE_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
194203
envtest: $(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
206232
bundle-build: ## Build the bundle image.

0 commit comments

Comments
 (0)