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
2
5
3
6
GIT_VERSION? =$(shell git log -1 --format="% h")
4
7
RELEASE_TAG ?= $(shell git tag --points-at HEAD)
@@ -41,7 +44,7 @@ CLUSTERCTL ?= bin/clusterctl-$(OS)-$(ARCH)
41
44
MANAGER ?= bin/manager-$(OS ) -$(ARCH )
42
45
KUBECTL ?= kubectl
43
46
44
- GO ?= GO111MODULE=on go
47
+ GO ?= GO111MODULE=on CGO_ENABLED=0 go
45
48
46
49
all : test manager clusterctl
47
50
@@ -50,7 +53,9 @@ vendor:
50
53
$(GO ) mod vendor
51
54
./hack/update-vendor.sh
52
55
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
54
59
55
60
imagetag :
56
61
ifndef IMAGETAG
68
73
cd : confirm
69
74
$(MAKE ) tag-image push IMAGETAG=$(GIT_VERSION )
70
75
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
+
71
84
72
85
# Run tests
73
- test : vendor generate fmt vet manifests
86
+ test : vendor generate fmt vet manifests $( KUBEBUILDER )
74
87
$(GO ) test -mod=vendor ./pkg/... ./cmd/... -coverprofile cover.out
75
88
76
89
# Build manager binary
@@ -133,7 +146,7 @@ endif
133
146
134
147
# Build the docker image
135
148
image : docker-build
136
- docker-build : test
149
+ docker-build :
137
150
docker build -t $(BUILD_IMAGE_TAG ) .
138
151
139
152
# Push the docker image
0 commit comments