@@ -11,20 +11,16 @@ RBAC_ROOT ?= "$(MANIFEST_ROOT)/rbac"
11
11
GIT_HOST = sigs.k8s.io
12
12
PWD := $(shell pwd)
13
13
BASE_DIR := $(shell basename $(PWD ) )
14
- TESTARGS_DEFAULT := "-v"
15
- export TESTARGS ?= $(TESTARGS_DEFAULT )
16
14
17
15
HAS_LINT := $(shell command -v golint;)
18
16
HAS_GOX := $(shell command -v gox;)
19
17
HAS_YQ := $(shell command -v yq;)
18
+ HAS_KUSTOMIZE := $(shell command -v kustomize;)
19
+ HAS_ENVSUBST := $(shell command -v envsubst;)
20
20
GOX_PARALLEL ?= 3
21
21
TARGETS ?= darwin/amd64 linux/amd64 linux/386 linux/arm linux/arm64 linux/ppc64le
22
22
DIST_DIRS = find * -type d -exec
23
23
24
- GENERATE_YAML_PATH =samples
25
- GENERATE_YAML_EXEC =generate-yaml.sh
26
- GENERATE_YAML_TEST_FOLDER =dummy-make-auto-test
27
-
28
24
GOOS ?= $(shell go env GOOS)
29
25
VERSION ?= $(shell git describe --exact-match 2> /dev/null || \
30
26
git describe --match=$(git rev-parse --short=8 HEAD ) --always --dirty --abbrev=8)
@@ -40,9 +36,6 @@ PULL_POLICY ?= Always
40
36
# Used in docker-* targets.
41
37
MANAGER_IMAGE ?= $(REGISTRY ) /$(MANAGER_IMAGE_NAME ) :$(MANAGER_IMAGE_TAG )
42
38
43
- .PHONY : vendor
44
- vendor : # # Runs go mod to ensure proper vendoring.
45
- ./hack/update-vendor.sh
46
39
47
40
build : binary images
48
41
@@ -60,28 +53,8 @@ clusterctl:
60
53
-o bin/clusterctl \
61
54
cmd/clusterctl/main.go
62
55
63
- test : unit functional generate_yaml_test
64
-
65
56
check : vendor fmt vet lint
66
57
67
- generate_yaml_test :
68
- ifndef HAS_YQ
69
- go get github.com/mikefarah/yq
70
- echo "installing yq"
71
- endif
72
- # Create a dummy file for test only
73
- echo 'clouds' > dummy-clouds-test.yaml
74
- $(GENERATE_YAML_PATH)/$(GENERATE_YAML_EXEC) -f dummy-clouds-test.yaml openstack ubuntu $(GENERATE_YAML_TEST_FOLDER)
75
- # the folder will be generated under same folder of $(GENERATE_YAML_PATH)
76
- rm -fr $(GENERATE_YAML_PATH)/$(GENERATE_YAML_TEST_FOLDER)
77
- rm dummy-clouds-test.yaml
78
-
79
- unit : generate vendor
80
- go test -tags=unit ./pkg/... ./cmd/... $(TESTARGS )
81
-
82
- functional :
83
- @echo " $@ not yet implemented"
84
-
85
58
fmt :
86
59
hack/verify-gofmt.sh
87
60
119
92
go version
120
93
go env
121
94
122
- clean :
123
- rm -rf _dist bin/manager bin/clusterctl
124
-
125
- realclean : clean
126
- rm -rf vendor
127
- if [ " $( GOPATH) " = " $( GOPATH_DEFAULT) " ]; then \
128
- rm -rf $(GOPATH ) ; \
129
- fi
130
-
131
95
shell :
132
96
$(SHELL ) -i
133
97
@@ -165,32 +129,108 @@ dist: build-cross
165
129
$(DIST_DIRS ) zip -r cluster-api-provider-openstack-$(VERSION ) -{}.zip {} \; \
166
130
)
167
131
168
- # Generate code
132
+ # TODO(sbueringer) target below are already cleaned up after v1alpha2 refactoring
133
+ # targets above have to be cleaned up
134
+
135
+ # # --------------------------------------
136
+ # # Testing
137
+ # # --------------------------------------
138
+
139
+ .PHONY : test
140
+ test : generate lint # # Run tests
141
+ $(MAKE ) test-go
142
+ $(MAKE ) test-generate-examples
143
+
144
+ .PHONY : test-go
145
+ test-go : # # Run tests
146
+ go test -v -tags=unit ./api/... ./pkg/... ./controllers/...
147
+
148
+ test-generate-examples :
149
+ ifndef HAS_YQ
150
+ go get github.com/mikefarah/yq
151
+ echo "installing yq"
152
+ endif
153
+ ifndef HAS_KUSTOMIZE
154
+ GO111MODULE=on go get sigs.k8s.io/kustomize/v3/cmd/kustomize
155
+ echo "installing kustomize"
156
+ endif
157
+ ifndef HAS_ENVSUBST
158
+ go get github.com/a8m/envsubst/cmd/envsubst
159
+ echo "installing envsubst"
160
+ endif
161
+ # Create a dummy file for test only
162
+ mkdir tmp
163
+ echo 'clouds' > tmp/dummy-clouds-test.yaml
164
+ examples/generate.sh -f tmp/dummy-clouds-test.yaml openstack tmp/dummy-make-auto-test
165
+ # the folder will be generated under same folder of examples
166
+ rm -rf tmp/dummy-make-auto-test
167
+ rm tmp/dummy-clouds-test.yaml
168
+
169
+ # # --------------------------------------
170
+ # # Generate
171
+ # # --------------------------------------
172
+
173
+ .PHONY : vendor
174
+ vendor : # # Runs go mod to ensure proper vendoring.
175
+ ./hack/update-vendor.sh
176
+
169
177
.PHONY : generate
170
- generate :
178
+ generate : # # Generate code
179
+ $(MAKE ) generate-go
171
180
$(MAKE ) generate-manifests
172
- # TODO(sbueringer) will work after we migrated to kubeadm (because there are problems generating structs with kubeadm structs embedded)
173
- # $(MAKE) generate-kubebuilder-code
181
+ $(MAKE ) generate-deepcopy
182
+
183
+ .PHONY : generate-go
184
+ generate-go : # # Runs go generate
185
+ go generate ./pkg/... ./cmd/...
174
186
175
- # Generate manifests e.g. CRD, RBAC etc.
176
187
.PHONY : generate-manifests
177
- # generate-manifests: $(CONTROLLER_GEN)
178
- # go run vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go \
179
- # paths=./api/... \
180
- # crd:trivialVersions=true \
181
- # output:crd:dir=$(CRD_ROOT) \
182
- # output:webhook:dir=$(WEBHOOK_ROOT) \
183
- # webhook
184
- # go run vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go \
185
- # paths=./controllers/... \
186
- # output:rbac:dir=$(RBAC_ROOT) \
187
- # rbac:roleName=manager-role
188
-
189
- .PHONY : generate-kubebuilder-code
190
- generate-kubebuilder-code : # # Runs controller-gen
188
+ generate-manifests : # # Generate manifests e.g. CRD, RBAC etc.
189
+ go run vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go \
190
+ paths=./api/... \
191
+ crd:trivialVersions=true \
192
+ output:crd:dir=$(CRD_ROOT ) \
193
+ output:webhook:dir=$(WEBHOOK_ROOT ) \
194
+ webhook
195
+ go run vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go \
196
+ paths=./controllers/... \
197
+ output:rbac:dir=$(RBAC_ROOT ) \
198
+ rbac:roleName=manager-role
199
+
200
+ .PHONY : generate-deepcopy
201
+ generate-deepcopy : # # Runs controller-gen to generate deepcopy files.
191
202
go run vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go \
192
203
paths=./api/... \
193
204
object:headerFile=./hack/boilerplate/boilerplate.generatego.txt
194
205
195
- .PHONY : build clean cover vendor docs fmt functional lint realclean \
196
- relnotes test translation version build-cross dist manifests
206
+ .PHONY : generate-examples
207
+ generate-examples : clean-examples # # Generate examples configurations to run a cluster.
208
+ ./examples/generate.sh
209
+
210
+ # # --------------------------------------
211
+ # # Cleanup / Verification
212
+ # # --------------------------------------
213
+
214
+ .PHONY : clean
215
+ clean : # # Remove all generated files
216
+ $(MAKE ) clean-bin
217
+ $(MAKE ) clean-temporary
218
+
219
+ .PHONY : clean-bin
220
+ clean-bin : # # Remove all generated binaries
221
+ rm -rf bin
222
+
223
+ .PHONY : clean-temporary
224
+ clean-temporary : # # Remove all temporary files and folders
225
+ rm -f minikube.kubeconfig
226
+ rm -f kubeconfig
227
+ rm -rf out/
228
+
229
+ .PHONY : clean-examples
230
+ clean-examples : # # Remove all the temporary files generated in the examples folder
231
+ rm -rf examples/_out/
232
+ rm -f examples/provider-components/provider-components-* .yaml
233
+
234
+
235
+ .PHONY : build clean cover vendor docs fmt functional lint \
236
+ translation version build-cross dist manifests
0 commit comments