@@ -66,34 +66,36 @@ all: manager
66
66
help : # # Display this help
67
67
@awk ' BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-22s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST )
68
68
69
+ # # --------------------------------------
70
+ # # Testing
71
+ # # --------------------------------------
72
+
69
73
.PHONY : test
70
- test : generate fmt vet lint # # Run tests
74
+ test : generate lint # # Run tests
71
75
go test ./... -coverprofile cover.out
72
76
77
+ # # --------------------------------------
78
+ # # Binaries
79
+ # # --------------------------------------
80
+
73
81
.PHONY : manager
74
- manager : generate fmt vet # # Build manager binary
82
+ manager : generate lint # # Build manager binary
75
83
go build -o bin/manager main.go
76
84
77
- .PHONY : run
78
- run : generate fmt vet # # Run against the configured Kubernetes cluster in ~/.kube/config
79
- go run ./main.go
80
-
81
- .PHONY : install
82
- install : generate # # Install CRDs into a cluster
83
- kubectl apply -f config/crd/bases
85
+ # Build controller-gen
86
+ $(CONTROLLER_GEN ) : $(TOOLS_DIR ) /go.mod
87
+ cd $(TOOLS_DIR ) && go build -o $(CONTROLLER_GEN_BIN ) sigs.k8s.io/controller-tools/cmd/controller-gen
84
88
85
- .PHONY : deploy
86
- deploy : generate # # Deploy controller in the configured Kubernetes cluster in ~/.kube/config
87
- kubectl apply -f config/crd/bases
88
- kubectl kustomize config/default | kubectl apply -f -
89
+ # Build golangci-lint
90
+ $(GOLANGCI_LINT ) : $(TOOLS_DIR ) /go.mod
91
+ cd $(TOOLS_DIR ) && go build -o $(GOLANGCI_LINT_BIN ) github.com/golangci/golangci-lint/cmd/golangci-lint
89
92
90
- .PHONY : fmt
91
- fmt : # # Run go fmt against code
92
- go fmt ./...
93
+ $(RELEASE_NOTES ) : $(TOOLS_DIR ) /go.mod
94
+ cd $(TOOLS_DIR ) && go build -o $(RELEASE_NOTES_BIN ) -tags tools sigs.k8s.io/cluster-api/hack/tools/release
93
95
94
- .PHONY : vet
95
- vet : # # Run go vet against code
96
- go vet ./...
96
+ # # --------------------------------------
97
+ # # Linting
98
+ # # --------------------------------------
97
99
98
100
.PHONY : lint
99
101
lint : $(GOLANGCI_LINT ) # # Lint quickly using `golangci-lint --fast=true`
@@ -103,6 +105,10 @@ lint: $(GOLANGCI_LINT) ## Lint quickly using `golangci-lint --fast=true`
103
105
lint-full : $(GOLANGCI_LINT ) # # Lint thoroughly using `golangci-lint --fase=false`
104
106
$(GOLANGCI_LINT ) run -v --fast=false
105
107
108
+ # # --------------------------------------
109
+ # # Generate / Manifests
110
+ # # --------------------------------------
111
+
106
112
.PHONY : generate
107
113
generate : $(CONTROLLER_GEN ) # # Generate code
108
114
$(MAKE ) generate-manifests
@@ -116,13 +122,10 @@ generate-deepcopy: $(CONTROLLER_GEN) ## Generate deepcopy files
116
122
generate-manifests : $(CONTROLLER_GEN ) # # Generate manifests e.g. CRD, RBAC etc
117
123
$(CONTROLLER_GEN ) $(CRD_OPTIONS ) rbac:roleName=manager-role webhook paths=" ./..." output:crd:dir=$(CRD_ROOT ) output:webhook:dir=$(WEBHOOK_ROOT ) output:rbac:dir=$(RBAC_ROOT )
118
124
119
- # Build controller-gen
120
- $(CONTROLLER_GEN ) : $(TOOLS_DIR ) /go.mod
121
- cd $(TOOLS_DIR ) && go build -o $(CONTROLLER_GEN_BIN ) sigs.k8s.io/controller-tools/cmd/controller-gen
122
-
123
- # Build golangci-lint
124
- $(GOLANGCI_LINT ) : $(TOOLS_DIR ) /go.mod
125
- cd $(TOOLS_DIR ) && go build -o $(GOLANGCI_LINT_BIN ) github.com/golangci/golangci-lint/cmd/golangci-lint
125
+ .PHONY : modules
126
+ modules : # # Runs go mod to ensure modules are up to date.
127
+ go mod tidy
128
+ cd $(TOOLS_DIR ) ; go mod tidy
126
129
127
130
# # --------------------------------------
128
131
# # Docker
@@ -177,9 +180,6 @@ RELEASE_DIR := out
177
180
$(RELEASE_DIR ) :
178
181
mkdir -p $(RELEASE_DIR ) /
179
182
180
- $(RELEASE_NOTES ) : $(TOOLS_DIR ) /go.mod
181
- cd $(TOOLS_DIR ) && go build -o $(RELEASE_NOTES_BIN ) -tags tools sigs.k8s.io/cluster-api/hack/tools/release
182
-
183
183
.PHONY : release
184
184
release : clean-release # # Builds and push container images using the latest git tag for the commit.
185
185
@if [ -z " ${RELEASE_TAG} " ]; then echo " RELEASE_TAG is not set" ; exit 1; fi
@@ -197,20 +197,43 @@ release-manifests: $(RELEASE_DIR) ## Builds the manifests to publish with a rele
197
197
198
198
.PHONY : release-staging
199
199
release-staging : # # Builds and push container images to the staging bucket.
200
- REGISTRY=$(STAGING_REGISTRY ) $(MAKE ) docker-build-all docker-push-all release-tag-latest
200
+ REGISTRY=$(STAGING_REGISTRY ) $(MAKE ) docker-build-all docker-push-all release-alias-tag
201
+
202
+ RELEASE_ALIAS_TAG =$(shell if [ "$(PULL_BASE_REF ) " = "master" ]; then echo "latest"; else echo "$(PULL_BASE_REF ) "; fi)
203
+
204
+ .PHONY : release-alias-tag
205
+ release-alias-tag : # Adds the tag to the last build tag.
206
+ gcloud container images add-tag $(CONTROLLER_IMG ) :$(TAG ) $(CONTROLLER_IMG ) :$(RELEASE_ALIAS_TAG )
201
207
202
208
.PHONY : release-notes
203
209
release-notes : $(RELEASE_NOTES )
204
210
$(RELEASE_NOTES )
205
211
206
- .PHONY : release-tag-latest
207
- release-tag-latest : # # Adds the latest tag to the last build tag.
208
- # # TODO(vincepri): Only do this when we're on master.
209
- gcloud container images add-tag $(CONTROLLER_IMG ) :$(TAG ) $(CONTROLLER_IMG ) :latest
210
-
211
212
# # --------------------------------------
212
213
# # Cleanup / Verification
213
214
# # --------------------------------------
215
+
216
+ .PHONY : clean
217
+ clean : # # Remove all generated files
218
+ $(MAKE ) clean-release
219
+
214
220
.PHONY : clean-release
215
221
clean-release : # # Remove the release folder
216
222
rm -rf $(RELEASE_DIR )
223
+
224
+ # # --------------------------------------
225
+ # # Others / Utilities
226
+ # # --------------------------------------
227
+
228
+ .PHONY : run
229
+ run : generate lint # # Run against the configured Kubernetes cluster in ~/.kube/config
230
+ go run ./main.go
231
+
232
+ .PHONY : install
233
+ install : generate # # Install CRDs into a cluster
234
+ kubectl apply -f config/crd/bases
235
+
236
+ .PHONY : deploy
237
+ deploy : generate # # Deploy controller in the configured Kubernetes cluster in ~/.kube/config
238
+ kubectl apply -f config/crd/bases
239
+ kubectl kustomize config/default | kubectl apply -f -
0 commit comments