Skip to content

Commit 3060e05

Browse files
committed
attempt to switch to using go tools instead of diverging dep versions in the Makefile which are less straightforward to update
1 parent 4b7ffa8 commit 3060e05

File tree

3 files changed

+2846
-166
lines changed

3 files changed

+2846
-166
lines changed

Makefile

Lines changed: 32 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -80,25 +80,25 @@ help: ## Display this help.
8080
generate: generate-manifests generate-code generate-mock generate-api-docs
8181

8282
.PHONY: generate-manifests
83-
generate-manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects.
84-
$(CONTROLLER_GEN) rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases
83+
generate-manifests: tools ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects.
84+
controller-gen rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases
8585

8686
.PHONY: generate-code
87-
generate-code: controller-gen gowrap ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.
87+
generate-code: tools ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.
8888
go generate ./...
89-
$(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..."
89+
controller-gen object:headerFile="hack/boilerplate.go.txt" paths="./..."
9090

9191
.PHONY: generate-mock
92-
generate-mock: mockgen ## Generate mocks for the Linode API client.
93-
$(MOCKGEN) -source=./clients/clients.go -destination ./mock/client.go -package mock
92+
generate-mock: tools ## Generate mocks for the Linode API client.
93+
mockgen -source=./clients/clients.go -destination ./mock/client.go -package mock
9494

9595
.PHONY: generate-flavors ## Generate template flavors.
96-
generate-flavors: $(KUSTOMIZE)
96+
generate-flavors:
9797
bash hack/generate-flavors.sh
9898

9999
.PHONY: generate-api-docs
100-
generate-api-docs: crd-ref-docs ## Generate API reference documentation.
101-
$(CRD_REF_DOCS) \
100+
generate-api-docs: tools ## Generate API reference documentation.
101+
crd-ref-docs \
102102
--config=./docs/.crd-ref-docs.yaml \
103103
--source-path=./api/ \
104104
--renderer=markdown \
@@ -127,19 +127,19 @@ gosec: ## Run gosec against code.
127127
docker run --rm -w /workdir -v $(PWD):/workdir securego/gosec:2.19.0 -exclude-dir=bin -exclude-generated ./...
128128

129129
.PHONY: lint
130-
lint: ## Run lint against code.
131-
$(GOLANGCI_LINT) run -c .golangci.yml
130+
lint: tools ## Run lint against code.
131+
golang-ci-lint run -c .golangci.yml
132132

133133
.PHONY: lint
134134
lint-api: golangci-lint-kal ## Run lint against code.
135135
$(GOLANGCI_LINT_KAL) run -c .golangci-kal.yml
136136

137137
.PHONY: nilcheck
138-
nilcheck: nilaway ## Run nil check against code.
138+
nilcheck: tools ## Run nil check against code.
139139
go list ./... | xargs -I {} -d '\n' nilaway -include-pkgs {} -exclude-file-docstrings "ignore_autogenerated" ./...
140140

141141
.PHONY: vulncheck
142-
vulncheck: govulncheck ## Run vulnerability check against code.
142+
vulncheck: tools ## Run vulnerability check against code.
143143
govulncheck ./...
144144

145145
.PHONY: docs
@@ -153,22 +153,22 @@ docs:
153153
##@ Testing:
154154

155155
.PHONY: test
156-
test: generate fmt vet envtest ## Run tests.
157-
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use ${ENVTEST_K8S_VERSION#v} --bin-dir $(CACHE_BIN) -p path)" go test -race -timeout 60s `go list ./... | grep -v ./mock$$` -coverprofile cover.out.tmp
156+
test: generate fmt vet ## Run tests.
157+
KUBEBUILDER_ASSETS="$(shell setup-envtest use 0.20.4 --bin-dir $(CACHE_BIN) -p path)" go test -race -timeout 60s `go list ./... | grep -v ./mock$$` -coverprofile cover.out.tmp
158158
grep -v "zz_generated.*" cover.out.tmp > cover.out
159159
rm cover.out.tmp
160160

161161
.PHONY: e2etest
162-
e2etest: generate local-release local-deploy chainsaw s5cmd
163-
SSE_KEY=$$(openssl rand -base64 32) LOCALBIN=$(CACHE_BIN) $(CHAINSAW) test ./e2e --parallel 2 --selector $(E2E_SELECTOR) $(E2E_FLAGS)
162+
e2etest: generate local-release local-deploy
163+
SSE_KEY=$$(openssl rand -base64 32) LOCALBIN=$(CACHE_BIN) chainsaw test ./e2e --parallel 2 --selector $(E2E_SELECTOR) $(E2E_FLAGS)
164164

165165
.PHONY: local-deploy
166-
local-deploy: kind-cluster tilt kustomize clusterctl
166+
local-deploy: tools kind-cluster
167167
$(TILT) ci -f Tiltfile
168168

169169
.PHONY: kind-cluster
170-
kind-cluster: kind ctlptl
171-
$(CTLPTL) apply -f .tilt/ctlptl-config.yaml
170+
kind-cluster: tools
171+
ctlptl apply -f .tilt/ctlptl-config.yaml
172172

173173
##@ Test Upgrade:
174174

@@ -185,18 +185,18 @@ checkout-last-release:
185185
git checkout $(LAST_RELEASE)
186186

187187
.PHONY: last-release-cluster
188-
last-release-cluster: kind ctlptl tilt kustomize clusterctl chainsaw kind-cluster checkout-last-release local-release local-deploy
189-
LOCALBIN=$(CACHE_BIN) CLUSTERCTL_CONFIG=$(CLUSTERCTL_CONFIG) SKIP_CUSTOM_DELETE=true $(CHAINSAW) test --namespace $(COMMON_NAMESPACE) --assert-timeout 600s --skip-delete ./e2e/capl-cluster-flavors/kubeadm-capl-cluster
188+
last-release-cluster: kind-cluster checkout-last-release local-release local-deploy
189+
LOCALBIN=$(CACHE_BIN) CLUSTERCTL_CONFIG=$(CLUSTERCTL_CONFIG) SKIP_CUSTOM_DELETE=true chainsaw test --namespace $(COMMON_NAMESPACE) --assert-timeout 600s --skip-delete ./e2e/capl-cluster-flavors/kubeadm-capl-cluster
190190

191191
.PHONY: test-upgrade
192192
test-upgrade: last-release-cluster checkout-latest-commit
193193
$(MAKE) local-release
194194
$(MAKE) local-deploy
195-
LOCALBIN=$(CACHE_BIN) CLUSTERCTL_CONFIG=$(CLUSTERCTL_CONFIG) $(CHAINSAW) test --namespace $(COMMON_NAMESPACE) --assert-timeout 800s ./e2e/capl-cluster-flavors/kubeadm-capl-cluster
195+
LOCALBIN=$(CACHE_BIN) CLUSTERCTL_CONFIG=$(CLUSTERCTL_CONFIG) chainsaw test --namespace $(COMMON_NAMESPACE) --assert-timeout 800s ./e2e/capl-cluster-flavors/kubeadm-capl-cluster
196196

197197
.PHONY: clean-kind-cluster
198-
clean-kind-cluster: ctlptl
199-
$(CTLPTL) delete -f .tilt/ctlptl-config.yaml
198+
clean-kind-cluster:
199+
ctlptl delete -f .tilt/ctlptl-config.yaml
200200

201201
## --------------------------------------
202202
## Build
@@ -245,8 +245,8 @@ ifndef ignore-not-found
245245
endif
246246

247247
.PHONY: tilt-cluster
248-
tilt-cluster: ctlptl tilt kind clusterctl
249-
$(CTLPTL) apply -f .tilt/ctlptl-config.yaml
248+
tilt-cluster: tools
249+
ctlptl apply -f .tilt/ctlptl-config.yaml
250250
$(TILT) up
251251

252252
## --------------------------------------
@@ -258,7 +258,7 @@ tilt-cluster: ctlptl tilt kind clusterctl
258258
RELEASE_DIR ?= infrastructure-linode
259259

260260
.PHONY: release
261-
release: kustomize clean-release set-manifest-image release-manifests generate-flavors release-templates release-metadata clean-release-git
261+
release: tools clean-release set-manifest-image release-manifests generate-flavors release-templates release-metadata clean-release-git
262262

263263
$(RELEASE_DIR):
264264
mkdir -p $(RELEASE_DIR)/
@@ -277,8 +277,8 @@ set-manifest-image: ## Update kustomize image patch file for default resource.
277277
sed -i'' -e 's@image: .*@image: '"$(REGISTRY)/$(IMAGE_NAME):$(VERSION)"'@' ./config/default/manager_image_patch.yaml
278278

279279
.PHONY: release-manifests
280-
release-manifests: $(KUSTOMIZE) $(RELEASE_DIR)
281-
$(KUSTOMIZE) build config/default > $(RELEASE_DIR)/infrastructure-components.yaml
280+
release-manifests: tools $(RELEASE_DIR)
281+
kustomize build config/default > $(RELEASE_DIR)/infrastructure-components.yaml
282282

283283
.PHONY: local-release
284284
local-release:
@@ -339,73 +339,31 @@ $(CACHE_BIN):
339339
## --------------------------------------
340340

341341
##@ Tooling Binaries:
342-
# setup-envtest does not have devbox support so always use CACHE_BIN
343342

344343
KUBECTL ?= $(LOCALBIN)/kubectl
345-
KUSTOMIZE ?= $(LOCALBIN)/kustomize
346-
CTLPTL ?= $(LOCALBIN)/ctlptl
347344
CLUSTERCTL ?= $(LOCALBIN)/clusterctl
348-
CRD_REF_DOCS ?= $(CACHE_BIN)/crd-ref-docs
349345
KUBEBUILDER ?= $(LOCALBIN)/kubebuilder
350-
CONTROLLER_GEN ?= $(CACHE_BIN)/controller-gen
351-
CONVERSION_GEN ?= $(CACHE_BIN)/conversion-gen
352346
TILT ?= $(LOCALBIN)/tilt
353347
KIND ?= $(LOCALBIN)/kind
354-
CHAINSAW ?= $(LOCALBIN)/chainsaw
355-
ENVTEST ?= $(CACHE_BIN)/setup-envtest
356-
NILAWAY ?= $(LOCALBIN)/nilaway
357-
GOVULNC ?= $(LOCALBIN)/govulncheck
358-
MOCKGEN ?= $(LOCALBIN)/mockgen
359-
GOWRAP ?= $(CACHE_BIN)/gowrap
360-
GOLANGCI_LINT ?= $(LOCALBIN)/golangci-lint
361348
GOLANGCI_LINT_KAL ?= $(CACHE_BIN)/golangci-lint-kube-api-linter
362-
S5CMD ?= $(CACHE_BIN)/s5cmd
363349

364350
## Tool Versions
365-
KUSTOMIZE_VERSION ?= v5.4.3
366-
CTLPTL_VERSION ?= v0.8.29
367351
CLUSTERCTL_VERSION ?= v1.11.1
368-
CRD_REF_DOCS_VERSION ?= v0.1.0
369352
KUBECTL_VERSION ?= v1.28.0
370353
KUBEBUILDER_VERSION ?= v3.15.1
371-
CONTROLLER_TOOLS_VERSION ?= v0.16.5
372354
TILT_VERSION ?= 0.33.10
373355
KIND_VERSION ?= 0.23.0
374-
CHAINSAW_VERSION ?= v0.2.11
375-
HUSKY_VERSION ?= v0.2.16
376-
NILAWAY_VERSION ?= d2274102dc2eab9f77cef849a5470a6ebf983125
377-
GOVULNC_VERSION ?= v1.1.1
378-
MOCKGEN_VERSION ?= v0.4.0
379-
GOWRAP_VERSION ?= v1.4.0
380-
S5CMD_VERSION ?= v2.2.2
381-
CONVERSION_GEN_VERSION ?= v0.32.2
382-
GOLANGCI_LINT_VERSION ?= v2.1.5
383356

384357
.PHONY: tools
385-
tools: $(KUSTOMIZE) $(CTLPTL) $(CLUSTERCTL) $(KUBECTL) $(CONTROLLER_GEN) $(CONVERSION_GEN) $(TILT) $(KIND) $(CHAINSAW) $(ENVTEST) $(HUSKY) $(NILAWAY) $(GOVULNC) $(MOCKGEN) $(GOWRAP)
386-
387-
388-
.PHONY: kustomize
389-
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary.
390-
$(KUSTOMIZE): $(LOCALBIN)
391-
GOBIN=$(LOCALBIN) GO111MODULE=on go install sigs.k8s.io/kustomize/kustomize/v5@$(KUSTOMIZE_VERSION)
392-
393-
.PHONY: ctlptl
394-
ctlptl: $(CTLPTL) ## Download ctlptl locally if necessary.
395-
$(CTLPTL): $(LOCALBIN)
396-
GOBIN=$(LOCALBIN) go install github.com/tilt-dev/ctlptl/cmd/ctlptl@$(CTLPTL_VERSION)
358+
tools: $(CLUSTERCTL) $(KUBECTL) $(KUBEBUILDER) $(TILT) $(KIND)
359+
go install tool
397360

398361
.PHONY: clusterctl
399362
clusterctl: $(CLUSTERCTL) ## Download clusterctl locally if necessary.
400363
$(CLUSTERCTL): $(LOCALBIN)
401364
curl -fsSL https://github.com/kubernetes-sigs/cluster-api/releases/download/$(CLUSTERCTL_VERSION)/clusterctl-$(OS)-$(ARCH_SHORT) -o $(CLUSTERCTL)
402365
chmod +x $(CLUSTERCTL)
403366

404-
.PHONY: crd-ref-docs
405-
crd-ref-docs: $(CRD_REF_DOCS) ## Download crd-ref-docs locally if necessary.
406-
$(CRD_REF_DOCS): $(LOCALBIN)
407-
GOBIN=$(CACHE_BIN) go install github.com/elastic/crd-ref-docs@$(CRD_REF_DOCS_VERSION)
408-
409367
.PHONY: kubectl
410368
kubectl: $(KUBECTL) ## Download kubectl locally if necessary.
411369
$(KUBECTL): $(LOCALBIN)
@@ -418,16 +376,6 @@ $(KUBEBUILDER): $(LOCALBIN)
418376
curl -L -o $(LOCALBIN)/kubebuilder https://github.com/kubernetes-sigs/kubebuilder/releases/download/$(KUBEBUILDER_VERSION)/kubebuilder_$(OS)_$(ARCH_SHORT)
419377
chmod +x $(LOCALBIN)/kubebuilder
420378

421-
.PHONY: controller-gen
422-
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary.
423-
$(CONTROLLER_GEN): $(LOCALBIN)
424-
GOBIN=$(CACHE_BIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
425-
426-
.PHONY: conversion-gen
427-
conversion-gen: $(CONVERSION_GEN) ## Download conversion-gen locally if necessary.
428-
$(CONVERSION_GEN): $(LOCALBIN)
429-
GOBIN=$(CACHE_BIN) go install k8s.io/code-generator/cmd/conversion-gen@$(CONVERSION_GEN_VERSION)
430-
431379
.PHONY: tilt
432380
tilt: $(TILT) ## Download tilt locally if necessary.
433381
$(TILT): $(LOCALBIN)
@@ -443,47 +391,7 @@ $(KIND): $(LOCALBIN)
443391
curl -Lso $(KIND) https://github.com/kubernetes-sigs/kind/releases/download/v$(KIND_VERSION)/kind-$(OS)-$(ARCH_SHORT)
444392
chmod +x $(KIND)
445393

446-
.PHONY: chainsaw
447-
chainsaw: $(CHAINSAW) ## Download chainsaw locally if necessary.
448-
$(CHAINSAW): $(CACHE_BIN)
449-
GOBIN=$(CACHE_BIN) go install github.com/kyverno/chainsaw@$(CHAINSAW_VERSION)
450-
451-
.PHONY: envtest
452-
envtest: $(ENVTEST) ## Download setup-envtest locally if necessary.
453-
$(ENVTEST): $(CACHE_BIN)
454-
GOBIN=$(CACHE_BIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest
455-
456-
.phony: golangci-lint
457-
golangci-lint: $(GOLANGCI_LINT)
458-
$(GOLANGCI_LINT): # Build golangci-lint from tools folder.
459-
GOBIN=$(LOCALBIN) go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@$(GOLANGCI_LINT_VERSION)
460-
461394
.phony: golangci-lint-kal
462395
golangci-lint-kal: $(GOLANGCI_LINT_KAL)
463396
$(GOLANGCI_LINT_KAL): $(GOLANGCI_LINT) # Build golangci-lint-kal from custom configuration.
464397
$(GOLANGCI_LINT) custom
465-
466-
.PHONY: nilaway
467-
nilaway: $(NILAWAY) ## Download nilaway locally if necessary.
468-
$(NILAWAY): $(LOCALBIN)
469-
GOBIN=$(LOCALBIN) go install go.uber.org/nilaway/cmd/nilaway@$(NILAWAY_VERSION)
470-
471-
.PHONY: govulncheck
472-
govulncheck: $(GOVULNC) ## Download govulncheck locally if necessary.
473-
$(GOVULNC): $(LOCALBIN)
474-
GOBIN=$(LOCALBIN) go install golang.org/x/vuln/cmd/govulncheck@$(GOVULNC_VERSION)
475-
476-
.PHONY: mockgen
477-
mockgen: $(MOCKGEN) ## Download mockgen locally if necessary.
478-
$(MOCKGEN): $(LOCALBIN)
479-
GOBIN=$(LOCALBIN) go install go.uber.org/mock/mockgen@$(MOCKGEN_VERSION)
480-
481-
.PHONY: gowrap
482-
gowrap: $(GOWRAP) ## Download gowrap locally if necessary.
483-
$(GOWRAP): $(CACHE_BIN)
484-
GOBIN=$(CACHE_BIN) go install github.com/hexdigest/gowrap/cmd/gowrap@$(GOWRAP_VERSION)
485-
486-
.PHONY: s5cmd
487-
s5cmd: $(S5CMD)
488-
$(S5CMD): $(CACHE_BIN)
489-
GOBIN=$(CACHE_BIN) go install github.com/peak/s5cmd/v2@$(S5CMD_VERSION)

0 commit comments

Comments
 (0)