@@ -5,7 +5,7 @@ REGISTRY ?= docker.io/linode
55IMAGE_NAME ?= cluster-api-provider-linode
66CONTROLLER_IMAGE ?= $(REGISTRY ) /$(IMAGE_NAME )
77TAG ?= dev
8- ENVTEST_K8S_VERSION : = $(shell go list -m -f '{{ .Version}}' k8s.io/client-go )
8+ ENVTEST_K8S_VERSION ? = $(shell go list -m -f "{{ .Version }}" k8s.io/api | awk -F'[v.]' '{printf "1. % d", $$3}' )
99VERSION ?= $(shell git describe --always --tag --dirty=-dev)
1010BUILD_ARGS := --build-arg VERSION=$(VERSION )
1111SHELL = /usr/bin/env bash -o pipefail
@@ -80,25 +80,25 @@ help: ## Display this help.
8080generate : 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 \
@@ -123,23 +123,23 @@ vet: ## Run go vet against code.
123123 go vet ./...
124124
125125.PHONY : gosec
126- gosec : # # Run gosec against code.
127- docker run --rm -w /workdir -v $( PWD ) :/workdir securego/ gosec:2.19.0 -exclude-dir=bin -exclude-generated ./...
126+ gosec : tools # # Run gosec against code.
127+ gosec -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+ golangci-lint run -c .golangci.yml
132132
133133.PHONY : lint
134134lint-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,23 @@ 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+ go env -w GOTOOLCHAIN=go1.25.0+auto
158+ KUBEBUILDER_ASSETS=" $( shell setup-envtest use $( ENVTEST_K8S_VERSION) --bin-dir $( CACHE_BIN) -p path) " go test -race -timeout 60s ` go list ./... | grep -v ./mock$$ ` -coverprofile cover.out.tmp
158159 grep -v " zz_generated.*" cover.out.tmp > cover.out
159160 rm cover.out.tmp
160161
161162.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 )
163+ e2etest : generate local-release local-deploy
164+ SSE_KEY=$$(openssl rand -base64 32 ) LOCALBIN=$(CACHE_BIN ) chainsaw test ./e2e --parallel 2 --selector $(E2E_SELECTOR ) $(E2E_FLAGS )
164165
165166.PHONY : local-deploy
166- local-deploy : kind-cluster tilt kustomize clusterctl
167+ local-deploy : tools kind-cluster
167168 $(TILT ) ci -f Tiltfile
168169
169170.PHONY : kind-cluster
170- kind-cluster : kind ctlptl
171- $( CTLPTL ) apply -f .tilt/ctlptl-config.yaml
171+ kind-cluster : tools
172+ ctlptl apply -f .tilt/ctlptl-config.yaml
172173
173174# #@ Test Upgrade:
174175
@@ -185,18 +186,18 @@ checkout-last-release:
185186 git checkout $(LAST_RELEASE )
186187
187188.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
189+ last-release-cluster : tools kind-cluster checkout-last-release local-release local-deploy
190+ 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
190191
191192.PHONY : test-upgrade
192193test-upgrade : last-release-cluster checkout-latest-commit
193194 $(MAKE ) local-release
194195 $(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
196+ LOCALBIN=$(CACHE_BIN ) CLUSTERCTL_CONFIG=$(CLUSTERCTL_CONFIG ) chainsaw test --namespace $(COMMON_NAMESPACE ) --assert-timeout 800s ./e2e/capl-cluster-flavors/kubeadm-capl-cluster
196197
197198.PHONY : clean-kind-cluster
198- clean-kind-cluster : ctlptl
199- $( CTLPTL ) delete -f .tilt/ctlptl-config.yaml
199+ clean-kind-cluster :
200+ ctlptl delete -f .tilt/ctlptl-config.yaml
200201
201202# # --------------------------------------
202203# # Build
@@ -245,8 +246,8 @@ ifndef ignore-not-found
245246endif
246247
247248.PHONY : tilt-cluster
248- tilt-cluster : ctlptl tilt kind clusterctl
249- $( CTLPTL ) apply -f .tilt/ctlptl-config.yaml
249+ tilt-cluster : tools
250+ ctlptl apply -f .tilt/ctlptl-config.yaml
250251 $(TILT ) up
251252
252253# # --------------------------------------
@@ -258,7 +259,7 @@ tilt-cluster: ctlptl tilt kind clusterctl
258259RELEASE_DIR ?= infrastructure-linode
259260
260261.PHONY : release
261- release : kustomize clean-release set-manifest-image release-manifests generate-flavors release-templates release-metadata clean-release-git
262+ release : tools clean-release set-manifest-image release-manifests generate-flavors release-templates release-metadata clean-release-git
262263
263264$(RELEASE_DIR ) :
264265 mkdir -p $(RELEASE_DIR ) /
@@ -277,8 +278,8 @@ set-manifest-image: ## Update kustomize image patch file for default resource.
277278 sed -i' ' -e ' s@image: .*@image: ' " $( REGISTRY) /$( IMAGE_NAME) :$( VERSION) " ' @' ./config/default/manager_image_patch.yaml
278279
279280.PHONY : release-manifests
280- release-manifests : $( KUSTOMIZE ) $(RELEASE_DIR )
281- $( KUSTOMIZE ) build config/default > $(RELEASE_DIR ) /infrastructure-components.yaml
281+ release-manifests : tools $(RELEASE_DIR )
282+ kustomize build config/default > $(RELEASE_DIR ) /infrastructure-components.yaml
282283
283284.PHONY : local-release
284285local-release :
@@ -339,73 +340,34 @@ $(CACHE_BIN):
339340# # --------------------------------------
340341
341342# #@ Tooling Binaries:
342- # setup-envtest does not have devbox support so always use CACHE_BIN
343343
344344KUBECTL ?= $(LOCALBIN ) /kubectl
345- KUSTOMIZE ?= $(LOCALBIN ) /kustomize
346- CTLPTL ?= $(LOCALBIN ) /ctlptl
347345CLUSTERCTL ?= $(LOCALBIN ) /clusterctl
348- CRD_REF_DOCS ?= $(CACHE_BIN ) /crd-ref-docs
349346KUBEBUILDER ?= $(LOCALBIN ) /kubebuilder
350- CONTROLLER_GEN ?= $(CACHE_BIN ) /controller-gen
351- CONVERSION_GEN ?= $(CACHE_BIN ) /conversion-gen
352347TILT ?= $(LOCALBIN ) /tilt
353348KIND ?= $(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
361349GOLANGCI_LINT_KAL ?= $(CACHE_BIN ) /golangci-lint-kube-api-linter
362- S5CMD ?= $(CACHE_BIN ) /s5cmd
363350
364351# # Tool Versions
365- KUSTOMIZE_VERSION ?= v5.4.3
366- CTLPTL_VERSION ?= v0.8.29
367352CLUSTERCTL_VERSION ?= v1.11.1
368- CRD_REF_DOCS_VERSION ?= v0.1.0
369353KUBECTL_VERSION ?= v1.28.0
370354KUBEBUILDER_VERSION ?= v3.15.1
371- CONTROLLER_TOOLS_VERSION ?= v0.16.5
372355TILT_VERSION ?= 0.33.10
373356KIND_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
357+ CHAINSAW_VERSION ?= v0.2.13
383358
384359.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 )
360+ tools : $(CLUSTERCTL ) $(KUBECTL ) $(KUBEBUILDER ) $(TILT ) $(KIND )
361+ go install tool
362+ # #@ we can't manage this with go tools because it causes a panic due to missing CRDs when running chainsaw
363+ go install github.com/kyverno/chainsaw@$(CHAINSAW_VERSION)
397364
398365.PHONY : clusterctl
399366clusterctl : $(CLUSTERCTL ) # # Download clusterctl locally if necessary.
400367$(CLUSTERCTL ) : $(LOCALBIN )
401368 curl -fsSL https://github.com/kubernetes-sigs/cluster-api/releases/download/$(CLUSTERCTL_VERSION ) /clusterctl-$(OS ) -$(ARCH_SHORT ) -o $(CLUSTERCTL )
402369 chmod +x $(CLUSTERCTL )
403370
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-
409371.PHONY : kubectl
410372kubectl : $(KUBECTL ) # # Download kubectl locally if necessary.
411373$(KUBECTL ) : $(LOCALBIN )
@@ -418,16 +380,6 @@ $(KUBEBUILDER): $(LOCALBIN)
418380 curl -L -o $(LOCALBIN ) /kubebuilder https://github.com/kubernetes-sigs/kubebuilder/releases/download/$(KUBEBUILDER_VERSION ) /kubebuilder_$(OS ) _$(ARCH_SHORT )
419381 chmod +x $(LOCALBIN ) /kubebuilder
420382
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-
431383.PHONY : tilt
432384tilt : $(TILT ) # # Download tilt locally if necessary.
433385$(TILT ) : $(LOCALBIN )
@@ -443,47 +395,7 @@ $(KIND): $(LOCALBIN)
443395 curl -Lso $(KIND ) https://github.com/kubernetes-sigs/kind/releases/download/v$(KIND_VERSION ) /kind-$(OS ) -$(ARCH_SHORT )
444396 chmod +x $(KIND )
445397
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-
461- .phony : golangci-lint-kal
398+ .PHONY : golangci-lint-kal
462399golangci-lint-kal : $(GOLANGCI_LINT_KAL )
463- $(GOLANGCI_LINT_KAL ) : $(GOLANGCI_LINT ) # Build golangci-lint-kal from custom configuration.
464- $(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 )
400+ $(GOLANGCI_LINT_KAL ) : tools # Build golangci-lint-kal from custom configuration.
401+ golangci-lint custom
0 commit comments