Skip to content

Commit 6fd1047

Browse files
committed
add tilt-cleanup make target
Signed-off-by: Artem Bortnikov <[email protected]>
1 parent c814e14 commit 6fd1047

File tree

2 files changed

+40
-27
lines changed

2 files changed

+40
-27
lines changed

Makefile

+27-10
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ else
1313
GOBIN=$(shell go env GOBIN)
1414
endif
1515

16+
GOARCH := $(shell go env GOARCH)
17+
GOOS := $(shell go env GOOS)
18+
1619
# CONTAINER_TOOL defines the container tool to be used for building images.
1720
# Be aware that the target commands are only tested with Docker which is
1821
# scaffolded by default. However, you might want to replace it to use other
@@ -237,7 +240,7 @@ $(HELM_PLUGINS):
237240
mkdir -p $(HELM_PLUGINS)
238241

239242
## Tool Binaries
240-
KUBECTL ?= kubectl
243+
KUBECTL ?= $(LOCALBIN)/kubectl
241244
KUSTOMIZE ?= $(LOCALBIN)/kustomize
242245
CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen
243246
ENVTEST ?= $(LOCALBIN)/setup-envtest
@@ -277,6 +280,12 @@ TILT_VERSION ?= 0.33.21
277280
KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"
278281
HELM_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3"
279282

283+
CURL_RETRIES=3
284+
.PHONY: kubectl
285+
kubectl: $(LOCALBIN)
286+
@curl --retry $(CURL_RETRIES) -fsL https://dl.k8s.io/release/$(K8S_VERSION)/bin/$(GOOS)/$(GOARCH)/kubectl -o $(KUBECTL)
287+
@chmod +x $(KUBECTL)
288+
280289
.PHONY: kustomize
281290
kustomize: $(LOCALBIN)
282291
@if test -x $(KUSTOMIZE) && ! $(KUSTOMIZE) version | grep -q $(KUSTOMIZE_VERSION); then \
@@ -341,24 +350,32 @@ ctlptl: $(LOCALBIN)
341350
@test -x $(CTLPTL) && $(CTLPTL) version | grep -q $(CTLPTL_VERSION) || \
342351
GOBIN=$(LOCALBIN) go install github.com/tilt-dev/ctlptl/cmd/ctlptl@$(CTLPTL_VERSION)
343352

344-
ifeq (darwin,$(shell go env GOOS))
353+
ifeq (darwin,$(GOOS))
345354
TILT_OS=mac
346355
else
347-
TILT_OS=$(shell go env GOOS)
356+
TILT_OS=$(GOOS)
348357
endif
349358

350-
TILT_ARCH ?= $(shell go env GOARCH)
359+
TILT_ARCH ?= $(GOARCH)
351360

352-
TILT_ARCHIVE=tilt.$(TILT_VERSION).$(TILT_OS).$(TILT_ARCH).tar.gz
361+
TILT_ARCHIVE_NAME=tilt.$(TILT_VERSION).$(TILT_OS).$(TILT_ARCH).tar.gz
353362
.PHONY: tilt
354363
tilt: $(LOCALBIN)
355-
@test -x $(TILT) && $(TILT) version | grep -q $(TILT_VERSION) || \
356-
rm -f $(TILT) && \
357-
curl -sL https://github.com/tilt-dev/tilt/releases/download/v$(TILT_VERSION)/$(TILT_ARCHIVE) -o /tmp/$(TILT_ARCHIVE) && \
358-
tar xzf /tmp/$(TILT_ARCHIVE) -C $(LOCALBIN) && \
359-
rm -f /tmp/$(TILT_ARCHIVE)
364+
@if ! test -x $(TILT) || ! $(TILT) version | grep -q $(TILT_VERSION); then \
365+
TMPDIR=$$(mktemp -d) && \
366+
trap 'rm -rf "$$TMPDIR"' EXIT && \
367+
curl -sL https://github.com/tilt-dev/tilt/releases/download/v$(TILT_VERSION)/$(TILT_ARCHIVE_NAME) -o "$$TMPDIR/$(TILT_ARCHIVE_NAME)" && \
368+
curl -sL https://github.com/tilt-dev/tilt/releases/download/v$(TILT_VERSION)/$(TILT_ARCHIVE_NAME).sha256 -o "$$TMPDIR/$(TILT_ARCHIVE_NAME).sha256" && \
369+
cd "$$TMPDIR" && sha256sum -c "$(TILT_ARCHIVE_NAME).sha256" && \
370+
tar xzf "$(TILT_ARCHIVE_NAME)" -C $(LOCALBIN) || exit 1; \
371+
fi
360372

361373
.PHONY: tilt-up
362374
tilt-up: kustomize kind ctlptl tilt
363375
$(CTLPTL) apply -f config/dev/ctlptl-kind.yaml
364376
$(TILT) up
377+
378+
.PHONY: tilt-cleanup
379+
tilt-cleanup: ctlptl
380+
$(TILT) down
381+
$(CTLPTL) delete -f config/dev/ctlptl-kind.yaml

Tiltfile

+13-17
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,39 @@
1-
#!/usr/bin/env bash
2-
31
update_settings(k8s_upsert_timeout_secs=60) # on first tilt up, often can take longer than 30 seconds
42

53
# tilt settings
64
settings = {
75
"allowed_contexts": [
86
"kind-etcd-operator-dev"
97
],
10-
"kubectl": "/usr/local/bin/kubectl",
11-
"kustomize": "./bin/kustomize",
8+
"kubectl": "bin/kubectl",
9+
"kustomize": "bin/kustomize",
1210
"cert_manager_version": "v1.15.3",
1311
}
1412

1513
# define variables and functions
16-
kubectl = settings.get("kubectl")
17-
kustomize_binary = settings.get("kustomize")
14+
base_path = config.main_dir
15+
kubectl_binary = "{}/{}".format(base_path, settings.get("kubectl"))
16+
kustomize_binary = "{}/{}".format(base_path, settings.get("kustomize"))
1817

1918
if "allowed_contexts" in settings:
2019
allow_k8s_contexts(settings.get("allowed_contexts"))
2120

2221
def deploy_cert_manager():
2322
version = settings.get("cert_manager_version")
2423
print("Installing cert-manager")
25-
local("{} apply -f https://github.com/cert-manager/cert-manager/releases/download/{}/cert-manager.yaml".format(kubectl, version), quiet=True, echo_off=True)
24+
local("{} apply -f https://github.com/cert-manager/cert-manager/releases/download/{}/cert-manager.yaml".format(kubectl_binary, version), quiet=True, echo_off=True)
2625

2726
print("Waiting for cert-manager to start")
28-
local("{} wait --for=condition=Available --timeout=300s -n cert-manager deployment/cert-manager".format(kubectl), quiet=True, echo_off=True)
29-
local("{} wait --for=condition=Available --timeout=300s -n cert-manager deployment/cert-manager-cainjector".format(kubectl), quiet=True, echo_off=True)
30-
local("{} wait --for=condition=Available --timeout=300s -n cert-manager deployment/cert-manager-webhook".format(kubectl), quiet=True, echo_off=True)
27+
local("{} wait --for=condition=Available --timeout=300s -n cert-manager deployment/cert-manager".format(kubectl_binary), quiet=True, echo_off=True)
28+
local("{} wait --for=condition=Available --timeout=300s -n cert-manager deployment/cert-manager-cainjector".format(kubectl_binary), quiet=True, echo_off=True)
29+
local("{} wait --for=condition=Available --timeout=300s -n cert-manager deployment/cert-manager-webhook".format(kubectl_binary), quiet=True, echo_off=True)
3130

32-
def waitforsystem():
33-
print("Waiting for metal-operator to start")
34-
local("{} wait --for=condition=ready --timeout=300s -n etcd-operator-system pod --all".format(kubectl), quiet=False, echo_off=True)
31+
def prepare_etcd_operator():
32+
docker_build('ghcr.io/aenix-io/etcd-operator', '.')
33+
return kustomize("./config/dev", kustomize_bin=kustomize_binary)
3534

3635
# deploy everything
3736
deploy_cert_manager()
3837

39-
docker_build('ghcr.io/aenix-io/etcd-operator', '.')
40-
41-
yaml = kustomize("./config/dev", kustomize_bin=kustomize_binary)
42-
38+
yaml = prepare_etcd_operator()
4339
k8s_yaml(yaml)

0 commit comments

Comments
 (0)