@@ -23,16 +23,19 @@ include $(ROOT_DIR_RELATIVE)/common.mk
2323export GO111MODULE =on
2424unexport GOPATH
2525
26+ # Enables shell script tracing. Enable by running: TRACE=1 make <target>
27+ TRACE ?= 0
28+
2629# Go
27- GO_VERSION ?= 1.23.4
30+ GO_VERSION ?= 1.23.8
2831
2932# Directories.
3033ARTIFACTS ?= $(REPO_ROOT ) /_artifacts
3134TOOLS_DIR := hack/tools
35+ BIN_DIR := bin
3236TOOLS_DIR_DEPS := $(TOOLS_DIR ) /go.sum $(TOOLS_DIR ) /go.mod $(TOOLS_DIR ) /Makefile
33- TOOLS_BIN_DIR := $(TOOLS_DIR ) /bin
37+ TOOLS_BIN_DIR := $(TOOLS_DIR ) /$( BIN_DIR )
3438
35- BIN_DIR := bin
3639REPO_ROOT := $(shell git rev-parse --show-toplevel)
3740GH_REPO ?= kubernetes-sigs/cluster-api-provider-openstack
3841TEST_E2E_DIR := test/e2e
@@ -49,6 +52,13 @@ GO_APIDIFF_VER := v0.8.2
4952GO_APIDIFF_BIN := go-apidiff
5053GO_APIDIFF_PKG := github.com/joelanford/go-apidiff
5154
55+ # govulncheck
56+ GOVULNCHECK_VER := v1.1.4
57+ GOVULNCHECK_BIN := govulncheck
58+ GOVULNCHECK_PKG := golang.org/x/vuln/cmd/govulncheck
59+
60+ TRIVY_VER := 0.49.1
61+
5262# Binaries.
5363CONTROLLER_GEN := $(TOOLS_BIN_DIR ) /controller-gen
5464CONVERSION_GEN := $(TOOLS_BIN_DIR ) /conversion-gen
@@ -63,6 +73,7 @@ RELEASE_NOTES := $(TOOLS_BIN_DIR)/release-notes
6373SETUP_ENVTEST := $(TOOLS_BIN_DIR ) /setup-envtest
6474GEN_CRD_API_REFERENCE_DOCS := $(TOOLS_BIN_DIR ) /gen-crd-api-reference-docs
6575GO_APIDIFF := $(TOOLS_BIN_DIR ) /$(GO_APIDIFF_BIN ) -$(GO_APIDIFF_VER )
76+ GOVULNCHECK := $(TOOLS_BIN_DIR ) /$(GOVULNCHECK_BIN ) -$(GOVULNCHECK_VER )
6677
6778# Kubebuilder
6879export KUBEBUILDER_ENVTEST_KUBERNETES_VERSION ?= 1.28.0
@@ -166,14 +177,15 @@ E2E_NO_ARTIFACT_TEMPLATES_DIR=test/e2e/data/infrastructure-openstack-no-artifact
166177e2e-templates : # # Generate cluster templates for e2e tests
167178e2e-templates : $(addprefix $(E2E_NO_ARTIFACT_TEMPLATES_DIR ) /, \
168179 cluster-template-v1alpha7.yaml \
180+ cluster-template-without-orc.yaml \
169181 cluster-template-md-remediation.yaml \
170182 cluster-template-kcp-remediation.yaml \
171183 cluster-template-multi-az.yaml \
172184 cluster-template-multi-network.yaml \
173185 cluster-template-without-lb.yaml \
174186 cluster-template.yaml \
175187 cluster-template-flatcar.yaml \
176- cluster-template-k8s-upgrade.yaml \
188+ cluster-template-k8s-upgrade.yaml \
177189 cluster-template-flatcar-sysext.yaml \
178190 cluster-template-no-bastion.yaml)
179191# Currently no templates that require CI artifacts
@@ -248,6 +260,12 @@ $(GO_APIDIFF_BIN): $(GO_APIDIFF)
248260$(GO_APIDIFF ) : # Build go-apidiff.
249261 GOBIN=$(abspath $(TOOLS_BIN_DIR ) ) $(GO_INSTALL ) $(GO_APIDIFF_PKG ) $(GO_APIDIFF_BIN ) $(GO_APIDIFF_VER )
250262
263+ .PHONY : $(GOVULNCHECK_BIN )
264+ $(GOVULNCHECK_BIN ) : $(GOVULNCHECK ) # # Build a local copy of govulncheck.
265+
266+ $(GOVULNCHECK ) : # Build govulncheck.
267+ GOBIN=$(abspath $(TOOLS_BIN_DIR ) ) $(GO_INSTALL ) $(GOVULNCHECK_PKG ) $(GOVULNCHECK_BIN ) $(GOVULNCHECK_VER )
268+
251269# # --------------------------------------
252270# #@ Linting
253271# # --------------------------------------
@@ -564,8 +582,12 @@ clean-temporary: ## Remove all temporary files and folders
564582clean-release : # # Remove the release folder
565583 rm -rf $(RELEASE_DIR )
566584
585+ .PHONY : clean-release-git
586+ clean-release-git : # # Restores the git files usually modified during a release
587+ git restore ./* manager_image_patch.yaml ./* manager_pull_policy.yaml
588+
567589.PHONY : verify
568- verify : verify-boilerplate verify-modules verify-gen
590+ verify : verify-boilerplate verify-modules verify-gen verify-govulncheck
569591
570592.PHONY : verify-boilerplate
571593verify-boilerplate :
@@ -585,6 +607,27 @@ verify-gen: generate
585607 echo " generated files are out of date, run make generate" ; exit 1; \
586608 fi
587609
610+ .PHONY : verify-container-images
611+ verify-container-images : # # Verify container images
612+ TRACE=$(TRACE ) ./hack/verify-container-images.sh $(TRIVY_VER )
613+
614+ .PHONY : verify-govulncheck
615+ verify-govulncheck : $(GOVULNCHECK ) # # Verify code for vulnerabilities
616+ $(GOVULNCHECK ) ./... && R1=$$? || R1=$$? ; \
617+ $(GOVULNCHECK ) -C " $( TOOLS_DIR) " ./... && R2=$$? || R2=$$? ; \
618+ if [ " $$ R1" -ne " 0" ] || [ " $$ R2" -ne " 0" ]; then \
619+ exit 1; \
620+ fi
621+
622+ .PHONY : verify-security
623+ verify-security : # # Verify code and images for vulnerabilities
624+ $(MAKE ) verify-container-images && R1=$$? || R1=$$? ; \
625+ $(MAKE ) verify-govulncheck && R2=$$? || R2=$$? ; \
626+ if [ " $$ R1" -ne " 0" ] || [ " $$ R2" -ne " 0" ]; then \
627+ echo " Check for vulnerabilities failed! There are vulnerabilities to be fixed" ; \
628+ exit 1; \
629+ fi
630+
588631.PHONY : vendor verify-vendoring
589632vendor :
590633 go mod vendor
0 commit comments