Skip to content

Commit 6cbdc16

Browse files
authored
✨ add version check for makefile template tools (#3077)
* add version check for makefile template tools Prevent running controller-gen and kustomize commands with a version that does not match the one specified in the corresponding CONTROLLER_TOOLS_VERSION or KUSTOMIZE_VERSION vars Addresses #3068 * Update makefile target descriptions * Updated descriptions for `kustomize` and `controller-gen` targets. * Reformatted `controller-gen` recipe to reduce line length Signed-off-by: Eduardo Coria <[email protected]> * update makefile samples Signed-off-by: Eduardo Coria <[email protected]> Signed-off-by: Eduardo Coria <[email protected]>
1 parent bff13b2 commit 6cbdc16

File tree

11 files changed

+88
-33
lines changed

11 files changed

+88
-33
lines changed

pkg/plugins/golang/v3/scaffolds/internal/templates/makefile.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -197,14 +197,19 @@ CONTROLLER_TOOLS_VERSION ?= {{ .ControllerToolsVersion }}
197197
198198
KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"
199199
.PHONY: kustomize
200-
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary.
200+
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. If wrong version is installed, it will be removed before downloading.
201201
$(KUSTOMIZE): $(LOCALBIN)
202+
@if test -x $(LOCALBIN)/kustomize && ! $(LOCALBIN)/kustomize version | grep -q $(KUSTOMIZE_VERSION); then
203+
echo "$(LOCALBIN)/kustomize version is not expected $(KUSTOMIZE_VERSION). Removing it before installing.";
204+
rm -rf $(LOCALBIN)/kustomize;
205+
fi
202206
test -s $(LOCALBIN)/kustomize || { curl -Ss $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN); }
203207
204208
.PHONY: controller-gen
205-
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary.
209+
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. If wrong version is installed, it will be overwritten.
206210
$(CONTROLLER_GEN): $(LOCALBIN)
207-
test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
211+
test -s $(LOCALBIN)/controller-gen && $(LOCALBIN)/controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION) || \
212+
GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
208213
209214
.PHONY: envtest
210215
envtest: $(ENVTEST) ## Download envtest-setup locally if necessary.

testdata/project-v3-addon-and-grafana/Makefile

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,14 +137,19 @@ CONTROLLER_TOOLS_VERSION ?= v0.10.0
137137

138138
KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"
139139
.PHONY: kustomize
140-
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary.
140+
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. If wrong version is installed, it will be removed before downloading.
141141
$(KUSTOMIZE): $(LOCALBIN)
142+
@if test -x $(LOCALBIN)/kustomize && ! $(LOCALBIN)/kustomize version | grep -q $(KUSTOMIZE_VERSION); then
143+
echo "$(LOCALBIN)/kustomize version is not expected $(KUSTOMIZE_VERSION). Removing it before installing.";
144+
rm -rf $(LOCALBIN)/kustomize;
145+
fi
142146
test -s $(LOCALBIN)/kustomize || { curl -Ss $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN); }
143147

144148
.PHONY: controller-gen
145-
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary.
149+
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. If wrong version is installed, it will be overwritten.
146150
$(CONTROLLER_GEN): $(LOCALBIN)
147-
test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
151+
test -s $(LOCALBIN)/controller-gen && $(LOCALBIN)/controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION) || \
152+
GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
148153

149154
.PHONY: envtest
150155
envtest: $(ENVTEST) ## Download envtest-setup locally if necessary.

testdata/project-v3-config/Makefile

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,14 +137,19 @@ CONTROLLER_TOOLS_VERSION ?= v0.10.0
137137

138138
KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"
139139
.PHONY: kustomize
140-
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary.
140+
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. If wrong version is installed, it will be removed before downloading.
141141
$(KUSTOMIZE): $(LOCALBIN)
142+
@if test -x $(LOCALBIN)/kustomize && ! $(LOCALBIN)/kustomize version | grep -q $(KUSTOMIZE_VERSION); then
143+
echo "$(LOCALBIN)/kustomize version is not expected $(KUSTOMIZE_VERSION). Removing it before installing.";
144+
rm -rf $(LOCALBIN)/kustomize;
145+
fi
142146
test -s $(LOCALBIN)/kustomize || { curl -Ss $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN); }
143147

144148
.PHONY: controller-gen
145-
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary.
149+
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. If wrong version is installed, it will be overwritten.
146150
$(CONTROLLER_GEN): $(LOCALBIN)
147-
test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
151+
test -s $(LOCALBIN)/controller-gen && $(LOCALBIN)/controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION) || \
152+
GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
148153

149154
.PHONY: envtest
150155
envtest: $(ENVTEST) ## Download envtest-setup locally if necessary.

testdata/project-v3-multigroup/Makefile

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,14 +137,19 @@ CONTROLLER_TOOLS_VERSION ?= v0.10.0
137137

138138
KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"
139139
.PHONY: kustomize
140-
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary.
140+
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. If wrong version is installed, it will be removed before downloading.
141141
$(KUSTOMIZE): $(LOCALBIN)
142+
@if test -x $(LOCALBIN)/kustomize && ! $(LOCALBIN)/kustomize version | grep -q $(KUSTOMIZE_VERSION); then
143+
echo "$(LOCALBIN)/kustomize version is not expected $(KUSTOMIZE_VERSION). Removing it before installing.";
144+
rm -rf $(LOCALBIN)/kustomize;
145+
fi
142146
test -s $(LOCALBIN)/kustomize || { curl -Ss $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN); }
143147

144148
.PHONY: controller-gen
145-
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary.
149+
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. If wrong version is installed, it will be overwritten.
146150
$(CONTROLLER_GEN): $(LOCALBIN)
147-
test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
151+
test -s $(LOCALBIN)/controller-gen && $(LOCALBIN)/controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION) || \
152+
GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
148153

149154
.PHONY: envtest
150155
envtest: $(ENVTEST) ## Download envtest-setup locally if necessary.

testdata/project-v3-with-deploy-image/Makefile

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,14 +137,19 @@ CONTROLLER_TOOLS_VERSION ?= v0.10.0
137137

138138
KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"
139139
.PHONY: kustomize
140-
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary.
140+
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. If wrong version is installed, it will be removed before downloading.
141141
$(KUSTOMIZE): $(LOCALBIN)
142+
@if test -x $(LOCALBIN)/kustomize && ! $(LOCALBIN)/kustomize version | grep -q $(KUSTOMIZE_VERSION); then
143+
echo "$(LOCALBIN)/kustomize version is not expected $(KUSTOMIZE_VERSION). Removing it before installing.";
144+
rm -rf $(LOCALBIN)/kustomize;
145+
fi
142146
test -s $(LOCALBIN)/kustomize || { curl -Ss $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN); }
143147

144148
.PHONY: controller-gen
145-
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary.
149+
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. If wrong version is installed, it will be overwritten.
146150
$(CONTROLLER_GEN): $(LOCALBIN)
147-
test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
151+
test -s $(LOCALBIN)/controller-gen && $(LOCALBIN)/controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION) || \
152+
GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
148153

149154
.PHONY: envtest
150155
envtest: $(ENVTEST) ## Download envtest-setup locally if necessary.

testdata/project-v3/Makefile

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,14 +137,19 @@ CONTROLLER_TOOLS_VERSION ?= v0.10.0
137137

138138
KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"
139139
.PHONY: kustomize
140-
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary.
140+
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. If wrong version is installed, it will be removed before downloading.
141141
$(KUSTOMIZE): $(LOCALBIN)
142+
@if test -x $(LOCALBIN)/kustomize && ! $(LOCALBIN)/kustomize version | grep -q $(KUSTOMIZE_VERSION); then
143+
echo "$(LOCALBIN)/kustomize version is not expected $(KUSTOMIZE_VERSION). Removing it before installing.";
144+
rm -rf $(LOCALBIN)/kustomize;
145+
fi
142146
test -s $(LOCALBIN)/kustomize || { curl -Ss $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN); }
143147

144148
.PHONY: controller-gen
145-
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary.
149+
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. If wrong version is installed, it will be overwritten.
146150
$(CONTROLLER_GEN): $(LOCALBIN)
147-
test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
151+
test -s $(LOCALBIN)/controller-gen && $(LOCALBIN)/controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION) || \
152+
GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
148153

149154
.PHONY: envtest
150155
envtest: $(ENVTEST) ## Download envtest-setup locally if necessary.

testdata/project-v4-addon-and-grafana/Makefile

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,14 +137,19 @@ CONTROLLER_TOOLS_VERSION ?= v0.10.0
137137

138138
KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"
139139
.PHONY: kustomize
140-
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary.
140+
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. If wrong version is installed, it will be removed before downloading.
141141
$(KUSTOMIZE): $(LOCALBIN)
142+
@if test -x $(LOCALBIN)/kustomize && ! $(LOCALBIN)/kustomize version | grep -q $(KUSTOMIZE_VERSION); then
143+
echo "$(LOCALBIN)/kustomize version is not expected $(KUSTOMIZE_VERSION). Removing it before installing.";
144+
rm -rf $(LOCALBIN)/kustomize;
145+
fi
142146
test -s $(LOCALBIN)/kustomize || { curl -Ss $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN); }
143147

144148
.PHONY: controller-gen
145-
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary.
149+
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. If wrong version is installed, it will be overwritten.
146150
$(CONTROLLER_GEN): $(LOCALBIN)
147-
test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
151+
test -s $(LOCALBIN)/controller-gen && $(LOCALBIN)/controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION) || \
152+
GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
148153

149154
.PHONY: envtest
150155
envtest: $(ENVTEST) ## Download envtest-setup locally if necessary.

testdata/project-v4-config/Makefile

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,14 +137,19 @@ CONTROLLER_TOOLS_VERSION ?= v0.10.0
137137

138138
KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"
139139
.PHONY: kustomize
140-
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary.
140+
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. If wrong version is installed, it will be removed before downloading.
141141
$(KUSTOMIZE): $(LOCALBIN)
142+
@if test -x $(LOCALBIN)/kustomize && ! $(LOCALBIN)/kustomize version | grep -q $(KUSTOMIZE_VERSION); then
143+
echo "$(LOCALBIN)/kustomize version is not expected $(KUSTOMIZE_VERSION). Removing it before installing.";
144+
rm -rf $(LOCALBIN)/kustomize;
145+
fi
142146
test -s $(LOCALBIN)/kustomize || { curl -Ss $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN); }
143147

144148
.PHONY: controller-gen
145-
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary.
149+
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. If wrong version is installed, it will be overwritten.
146150
$(CONTROLLER_GEN): $(LOCALBIN)
147-
test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
151+
test -s $(LOCALBIN)/controller-gen && $(LOCALBIN)/controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION) || \
152+
GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
148153

149154
.PHONY: envtest
150155
envtest: $(ENVTEST) ## Download envtest-setup locally if necessary.

testdata/project-v4-multigroup/Makefile

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,14 +137,19 @@ CONTROLLER_TOOLS_VERSION ?= v0.10.0
137137

138138
KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"
139139
.PHONY: kustomize
140-
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary.
140+
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. If wrong version is installed, it will be removed before downloading.
141141
$(KUSTOMIZE): $(LOCALBIN)
142+
@if test -x $(LOCALBIN)/kustomize && ! $(LOCALBIN)/kustomize version | grep -q $(KUSTOMIZE_VERSION); then
143+
echo "$(LOCALBIN)/kustomize version is not expected $(KUSTOMIZE_VERSION). Removing it before installing.";
144+
rm -rf $(LOCALBIN)/kustomize;
145+
fi
142146
test -s $(LOCALBIN)/kustomize || { curl -Ss $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN); }
143147

144148
.PHONY: controller-gen
145-
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary.
149+
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. If wrong version is installed, it will be overwritten.
146150
$(CONTROLLER_GEN): $(LOCALBIN)
147-
test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
151+
test -s $(LOCALBIN)/controller-gen && $(LOCALBIN)/controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION) || \
152+
GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
148153

149154
.PHONY: envtest
150155
envtest: $(ENVTEST) ## Download envtest-setup locally if necessary.

testdata/project-v4-with-deploy-image/Makefile

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,14 +137,19 @@ CONTROLLER_TOOLS_VERSION ?= v0.10.0
137137

138138
KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"
139139
.PHONY: kustomize
140-
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary.
140+
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. If wrong version is installed, it will be removed before downloading.
141141
$(KUSTOMIZE): $(LOCALBIN)
142+
@if test -x $(LOCALBIN)/kustomize && ! $(LOCALBIN)/kustomize version | grep -q $(KUSTOMIZE_VERSION); then
143+
echo "$(LOCALBIN)/kustomize version is not expected $(KUSTOMIZE_VERSION). Removing it before installing.";
144+
rm -rf $(LOCALBIN)/kustomize;
145+
fi
142146
test -s $(LOCALBIN)/kustomize || { curl -Ss $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN); }
143147

144148
.PHONY: controller-gen
145-
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary.
149+
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. If wrong version is installed, it will be overwritten.
146150
$(CONTROLLER_GEN): $(LOCALBIN)
147-
test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
151+
test -s $(LOCALBIN)/controller-gen && $(LOCALBIN)/controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION) || \
152+
GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
148153

149154
.PHONY: envtest
150155
envtest: $(ENVTEST) ## Download envtest-setup locally if necessary.

0 commit comments

Comments
 (0)