@@ -134,6 +134,8 @@ GO_APIDIFF_BIN := go-apidiff
134
134
GO_APIDIFF := $(abspath $(TOOLS_BIN_DIR ) /$(GO_APIDIFF_BIN ) -$(GO_APIDIFF_VER ) )
135
135
GO_APIDIFF_PKG := github.com/joelanford/go-apidiff
136
136
137
+ SHELLCHECK_VER := v0.9.0
138
+
137
139
KPROMO_VER := v4.0.4
138
140
KPROMO_BIN := kpromo
139
141
KPROMO := $(abspath $(TOOLS_BIN_DIR ) /$(KPROMO_BIN ) -$(KPROMO_VER ) )
@@ -150,10 +152,15 @@ GINKGO := $(abspath $(TOOLS_BIN_DIR)/$(GINKGO_BIN)-$(GINGKO_VER))
150
152
GINKGO_PKG := github.com/onsi/ginkgo/v2/ginkgo
151
153
152
154
GOLANGCI_LINT_BIN := golangci-lint
153
- GOLANGCI_LINT_VER := $(shell cat .github/workflows/golangci-lint.yaml | grep [[:space:]]version: | sed 's/.* version: //')
155
+ GOLANGCI_LINT_VER := $(shell cat .github/workflows/pr- golangci-lint.yaml | grep [[:space:]]version: | sed 's/.* version: //')
154
156
GOLANGCI_LINT := $(abspath $(TOOLS_BIN_DIR ) /$(GOLANGCI_LINT_BIN ) -$(GOLANGCI_LINT_VER ) )
155
157
GOLANGCI_LINT_PKG := github.com/golangci/golangci-lint/cmd/golangci-lint
156
158
159
+ GOVULNCHECK_BIN := govulncheck
160
+ GOVULNCHECK_VER := v1.0.0
161
+ GOVULNCHECK := $(abspath $(TOOLS_BIN_DIR ) /$(GOVULNCHECK_BIN ) -$(GOVULNCHECK_VER ) )
162
+ GOVULNCHECK_PKG := golang.org/x/vuln/cmd/govulncheck
163
+
157
164
GOVC_VER := $(shell cat go.mod | grep "github.com/vmware/govmomi" | awk '{print $$NF}')
158
165
GOVC_BIN := govc
159
166
GOVC := $(abspath $(TOOLS_BIN_DIR ) /$(GOVC_BIN ) -$(GOVC_VER ) )
@@ -228,7 +235,7 @@ help: # Display this help
228
235
229
236
.PHONY : generate
230
237
generate : # # Run all generate targets
231
- $(MAKE ) generate-modules generate-manifests generate-go-deepcopy generate-go-conversions
238
+ $(MAKE ) generate-modules generate-manifests generate-go-deepcopy generate-go-conversions generate-flavors
232
239
233
240
.PHONY : generate-manifests
234
241
generate-manifests : $(CONTROLLER_GEN ) # # Generate manifests e.g. CRD, RBAC etc.
@@ -276,6 +283,10 @@ generate-go-conversions: $(CONTROLLER_GEN) $(CONVERSION_GEN) ## Runs Go related
276
283
generate-modules : # # Run go mod tidy to ensure modules are up to date
277
284
go mod tidy
278
285
286
+ .PHONY : generate-doctoc
287
+ generate-doctoc :
288
+ TRACE=$(TRACE ) ./hack/generate-doctoc.sh
289
+
279
290
.PHONY : generate-e2e-templates
280
291
generate-e2e-templates : # # Generate e2e cluster templates
281
292
$(MAKE ) release-flavors
@@ -311,7 +322,6 @@ generate-e2e-templates: ## Generate e2e cluster templates
311
322
lint : $(GOLANGCI_LINT ) # # Lint the codebase
312
323
$(MAKE ) lint-go-full
313
324
$(MAKE ) lint-markdown
314
- $(MAKE ) lint-shell
315
325
316
326
GOLANGCI_LINT_EXTRA_ARGS ?= --fast=true
317
327
.PHONY : lint-go
@@ -326,10 +336,6 @@ lint-go-full: lint-go ## Run slower linters to detect possible issues
326
336
lint-markdown : # # Lint the project's markdown
327
337
docker run --rm -v " $$ (pwd)" :/build$(DOCKER_VOL_OPTS ) gcr.io/cluster-api-provider-vsphere/extra/mdlint:0.17.0 -- /md/lint -i contrib/haproxy/openapi -i _releasenotes .
328
338
329
- .PHONY : lint-shell
330
- lint-shell : # # Lint the project's shell scripts
331
- docker run --rm -t -v " $$ (pwd)" :/build:ro gcr.io/cluster-api-provider-vsphere/extra/shellcheck
332
-
333
339
.PHONY : lint-fix
334
340
lint-fix : $(GOLANGCI_LINT ) # # Lint the codebase and run auto-fixers if supported by the linter
335
341
GOLANGCI_LINT_EXTRA_ARGS=" --fast=false --fix" $(MAKE ) lint-go
@@ -340,10 +346,10 @@ APIDIFF_OLD_COMMIT ?= $(shell git rev-parse origin/main)
340
346
apidiff : $(GO_APIDIFF ) # # Check for API differences
341
347
$(GO_APIDIFF ) $(APIDIFF_OLD_COMMIT ) --print-compatible
342
348
343
- ALL_VERIFY_CHECKS = boilerplate modules gen conversions
349
+ ALL_VERIFY_CHECKS = boilerplate shellcheck modules gen conversions doctoc flavors
344
350
345
351
.PHONY : verify
346
- verify : $(addprefix verify-,$(ALL_VERIFY_CHECKS ) ) lint-markdown lint-shell # # Run all verify-* targets
352
+ verify : $(addprefix verify-,$(ALL_VERIFY_CHECKS ) ) lint-markdown # # Run all verify-* targets
347
353
348
354
.PHONY : verify-modules
349
355
verify-modules : generate-modules # # Verify go modules are up to date
@@ -367,14 +373,46 @@ verify-gen: generate ## Verify go generated files are up to date
367
373
verify-conversions : $(CONVERSION_VERIFIER ) # # Verifies expected API conversion are in place
368
374
$(CONVERSION_VERIFIER )
369
375
376
+ .PHONY : verify-doctoc
377
+ verify-doctoc : generate-doctoc
378
+ @if ! (git diff --quiet HEAD); then \
379
+ git diff; \
380
+ echo " doctoc is out of date, run make generate-doctoc" ; exit 1; \
381
+ fi
382
+
370
383
.PHONY : verify-boilerplate
371
384
verify-boilerplate : # # Verify boilerplate text exists in each file
372
385
TRACE=$(TRACE ) ./hack/verify-boilerplate.sh
373
386
387
+ .PHONY : verify-shellcheck
388
+ verify-shellcheck : # # Verify shell files
389
+ TRACE=$(TRACE ) ./hack/verify-shellcheck.sh $(SHELLCHECK_VER )
390
+
374
391
.PHONY : verify-container-images
375
392
verify-container-images : # # Verify container images
376
393
TRACE=$(TRACE ) ./hack/verify-container-images.sh
377
394
395
+ .PHONY : verify-govulncheck
396
+ verify-govulncheck : $(GOVULNCHECK ) # # Verify code for vulnerabilities
397
+ $(GOVULNCHECK ) ./...
398
+
399
+ .PHONY : verify-security
400
+ verify-security : # # Verify code and images for vulnerabilities
401
+ $(MAKE ) verify-container-images && R1=$$? || R1=$$? ; \
402
+ $(MAKE ) verify-govulncheck && R2=$$? || R2=$$? ; \
403
+ if [ " $$ R1" -ne " 0" ] || [ " $$ R2" -ne " 0" ]; then \
404
+ echo " Check for vulnerabilities failed! There are vulnerabilities to be fixed" ; \
405
+ exit 1; \
406
+ fi
407
+
408
+ .PHONY : verify-flavors
409
+ verify-flavors : $(FLAVOR_DIR ) generate-flavors # # Verify generated flavors
410
+ @if ! (git diff --quiet HEAD -- $( FLAVOR_DIR) ); then \
411
+ git diff $(FLAVOR_DIR ) ; \
412
+ echo " flavor files in templates directory are out of date" ; exit 1; \
413
+ fi
414
+
415
+
378
416
# # --------------------------------------
379
417
# # Build
380
418
# # --------------------------------------
@@ -721,6 +759,9 @@ $(GINKGO_BIN): $(GINKGO) ## Build a local copy of ginkgo.
721
759
.PHONY : $(GOLANGCI_LINT_BIN )
722
760
$(GOLANGCI_LINT_BIN ) : $(GOLANGCI_LINT ) # # Build a local copy of golangci-lint.
723
761
762
+ .PHONY : $(GOVULNCHECK_BIN )
763
+ $(GOVULNCHECK_BIN ) : $(GOVULNCHECK ) # # Build a local copy of govulncheck.
764
+
724
765
.PHONY : $(GOVC_BIN )
725
766
$(GOVC_BIN ) : $(GOVC ) # # Build a local copy of govc.
726
767
@@ -770,6 +811,9 @@ $(GINKGO): # Build ginkgo.
770
811
$(GOLANGCI_LINT ) : # Build golangci-lint.
771
812
GOBIN=$(TOOLS_BIN_DIR ) $(GO_INSTALL ) $(GOLANGCI_LINT_PKG ) $(GOLANGCI_LINT_BIN ) $(GOLANGCI_LINT_VER )
772
813
814
+ $(GOVULNCHECK ) : # Build govulncheck.
815
+ GOBIN=$(TOOLS_BIN_DIR ) $(GO_INSTALL ) $(GOVULNCHECK_PKG ) $(GOVULNCHECK_BIN ) $(GOVULNCHECK_VER )
816
+
773
817
$(GOVC ) : # Build GOVC.
774
818
CGO_ENABLED=0 GOBIN=$(TOOLS_BIN_DIR ) $(GO_INSTALL ) $(GOVC_PKG ) $(GOVC_BIN ) $(GOVC_VER )
775
819
0 commit comments