@@ -47,12 +47,17 @@ ifeq ("$(PGO_BASEOS)", "ubi8")
47
47
PACKAGER =microdnf
48
48
endif
49
49
50
+ # Setting SHELL to bash allows bash commands to be executed by recipes.
51
+ # Options are set to exit when a recipe line exits non-zero or a piped command fails.
52
+ SHELL = /usr/bin/env bash -O globstar -o pipefail
53
+ .SHELLFLAGS = -ec
54
+
50
55
DEBUG_BUILD ?= false
51
56
GO ?= go
52
57
GO_BUILD = $(GO_CMD ) build -trimpath
53
58
GO_CMD = $(GO_ENV ) $(GO )
54
59
GO_TEST ?= $(GO ) test
55
- KUTTL_TEST ?= kuttl test
60
+ KUTTL_TEST ?= $( KUTTL ) test
56
61
57
62
# Disable optimizations if creating a debug build
58
63
ifeq ("$(DEBUG_BUILD ) ", "true")
@@ -210,7 +215,7 @@ check-envtest-existing: createnamespaces
210
215
# Expects operator to be running
211
216
.PHONY : check-kuttl
212
217
check-kuttl :
213
- ${PGO_KUBE_CLIENT} ${ KUTTL_TEST} \
218
+ ${KUTTL_TEST} \
214
219
--config testing/kuttl/kuttl-test.yaml
215
220
216
221
.PHONY : generate-kuttl
@@ -234,14 +239,12 @@ check-generate: generate-crd generate-deepcopy generate-rbac
234
239
git diff --exit-code -- config/rbac
235
240
git diff --exit-code -- pkg/apis
236
241
237
- clean : clean-deprecated
242
+ clean : clean-deprecated clean-tools
238
243
rm -f bin/postgres-operator
239
244
rm -f config/rbac/role.yaml
240
245
[ ! -d testing/kuttl/e2e-generated ] || rm -r testing/kuttl/e2e-generated
241
246
[ ! -d testing/kuttl/e2e-generated-other ] || rm -r testing/kuttl/e2e-generated-other
242
247
[ ! -d build/crd/generated ] || rm -r build/crd/generated
243
- [ ! -d hack/tools/envtest ] || rm -r hack/tools/envtest
244
- [ ! -n " $$ (ls hack/tools)" ] || rm hack/tools/*
245
248
[ ! -d hack/.kube ] || rm -r hack/.kube
246
249
247
250
clean-deprecated :
@@ -306,3 +309,32 @@ hack/tools/envtest:
306
309
license : licenses
307
310
licenses :
308
311
./bin/license_aggregator.sh ./cmd/...
312
+
313
+ # # Tools
314
+
315
+ .PHONY : clean-tools tools
316
+ clean-tools :
317
+ rm -rf hack/krew hack/tools/envtest
318
+ [ ! -n " $$ (ls hack/tools)" ] || rm hack/tools/*
319
+
320
+ KREW ?= hack/tools/krew
321
+ tools : tools/krew
322
+ tools/krew :
323
+ $(call go-get-tool,$(KREW ) ,sigs.k8s.io/krew/cmd/[email protected] )
324
+
325
+ KUTTL ?= hack/tools/kuttl
326
+ tools : tools/kuttl
327
+ tools/kuttl : tools/krew
328
+ $(call krew-get-tool,$(KUTTL ) ,kuttl)
329
+
330
+ # go-get-tool will 'go install' any package $2 and install it to $1.
331
+ define go-get-tool
332
+ @[ -f '$(1 ) ' ] || { echo Downloading '$(2 ) '; GOBIN='$(abspath $(dir $(1 ) ) ) ' $(GO ) install '$(2 ) '; }
333
+ endef
334
+
335
+ # krew-get-tool will 'krew install' any plugin $2 and link it to $1.
336
+ define krew-get-tool
337
+ @[ -f '$(1 ) ' ] || { KREW_ROOT='hack/krew' $(KREW ) install '$(2 ) '; }
338
+ @[ -f '$(1 ) ' ] || { T="$$(readlink 'hack/krew/bin/kubectl-$(notdir $(1 ) ) ' ) " && \
339
+ [[ '$(1 ) ' == hack/* ]] && ln -fs "..$${T# $(realpath hack)}" '$(1)'; }
340
+ endef
0 commit comments