1- .PHONY : vendor test manager clusterctl run install deploy manifests generate fmt vet run
1+ .PHONY : vendor test manager clusterctl run install deploy manifests generate fmt vet run kubebuilder ci cd
2+ 
3+ KUBEBUILDER_VERSION  ?= 2.0.0-beta.0
4+ KUBEBUILDER  ?= /usr/local/kubebuilder/bin/kubebuilder
25
36GIT_VERSION? =$(shell  git log -1 --format="% h") 
47RELEASE_TAG  ?= $(shell  git tag --points-at HEAD) 
@@ -41,7 +44,7 @@ CLUSTERCTL ?= bin/clusterctl-$(OS)-$(ARCH)
4144MANAGER  ?= bin/manager-$(OS ) -$(ARCH ) 
4245KUBECTL  ?= kubectl
4346
44- GO  ?= GO111MODULE=on go
47+ GO  ?= GO111MODULE=on CGO_ENABLED=0  go
4548
4649all : test manager clusterctl
4750
@@ -50,7 +53,9 @@ vendor:
5053	$(GO )  mod vendor
5154	./hack/update-vendor.sh
5255
53- ci : fmt vet test image
56+ #  2 separate targets: ci-test does everything locally, does not need docker; ci includes ci-test and building the image
57+ ci-test : fmt vet test
58+ ci : ci-test image
5459
5560imagetag :
5661ifndef  IMAGETAG 
6873cd : confirm
6974	$(MAKE )  tag-image push IMAGETAG=$(GIT_VERSION ) 
7075
76+ #  needed kubebuilder for tests
77+ kubebuilder : $(KUBEBUILDER ) 
78+ $(KUBEBUILDER ) 
79+ 	curl -sL https://go.kubebuilder.io/dl/$(KUBEBUILDER_VERSION ) /$(BUILDOS ) /$(BUILDARCH )  |  tar -xz -C /tmp/
80+ 	#  move to a long-term location and put it on your path
81+ 	#  (you'll need to set the KUBEBUILDER_ASSETS env var if you put it somewhere else)
82+ 	mv /tmp/kubebuilder_$(KUBEBUILDER_VERSION ) _$(BUILDOS ) _$(BUILDARCH )  /usr/local/kubebuilder
83+ 
7184
7285#  Run tests
73- test : vendor generate fmt vet manifests
86+ test : vendor generate fmt vet manifests  $( KUBEBUILDER ) 
7487	$(GO )  test  -mod=vendor ./pkg/... ./cmd/... -coverprofile cover.out
7588
7689#  Build manager binary
@@ -133,7 +146,7 @@ endif
133146
134147#  Build the docker image
135148image : docker-build
136- docker-build : test 
149+ docker-build :
137150	docker build -t $(BUILD_IMAGE_TAG )  . 
138151
139152#  Push the docker image
0 commit comments