-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbb.edn
More file actions
74 lines (60 loc) · 3.65 KB
/
Copy pathbb.edn
File metadata and controls
74 lines (60 loc) · 3.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
{:tasks {:requires ([clojure.string :as str]
[clojure.java.io :as io]
[babashka.process :as p]
[babashka.fs :as fs])
:init (do (def devcontainer-image "jarppe/clj-devcontainer")
(def devcontainer-image-dev (str devcontainer-image ":dev"))
(def devcontainer-image-latest (str devcontainer-image ":latest")))
;;
;; =================================================================================
;; Build local testing image:
;; =================================================================================
;;
dev:build {:doc "Build image for local testing"
:task (p/exec "devcontainer build"
"--workspace-folder" "."
"--config" ".devcontainer.json"
"--image-name" devcontainer-image-dev
".")}
dev:sh {:doc "Run local test image"
:task (apply p/exec "docker run"
"--rm"
"--interactive"
"--tty"
"--name" "devcontainer"
devcontainer-image-dev
*command-line-args*)}
;;
;; =================================================================================
;; Build distribution image:
;; =================================================================================
;;
dist:build {:doc "Build release image"
:task (p/shell "devcontainer build"
"--workspace-folder" "."
"--config" ".devcontainer.json"
"--image-name" devcontainer-image-latest
"--platform" "linux/arm64,linux/amd64"
".")}
dist:push {:doc "Build and push image"
:task (do (run 'dist:build)
(p/exec "docker push" devcontainer-image-latest))}
;;
;; =================================================================================
;; Deploy to cluster:
;; =================================================================================
;;
kube:apply {:doc "Deploy to cluster"
:task (do (when-not (-> "./.secrets/id_ed25519" (io/file) (.canRead))
(println "error: Cant find SSH keys.")
(println " Copy the SSH key pair you use with git to ./secrets directory")
(System/exit 1))
(p/shell "kubectl apply -k ."))}
kube:ps {:doc "List devcontainer pods"
:task (p/shell "kubectl get pods --selector devcontainer,programmer=jarppe")}
kube:sh {:doc "Open bash sell in devcontainer pod"
:task (p/exec "kubectl exec -it --container=app jarppe-devcontainer-pod -- bash")}
kube:stop {:doc "Stop the devcontainer pod in kube cluster"
:task (p/exec "kubectl delete pod jarppe-devcontainer-pod")}
kube:delete {:doc "Stop the devcontainer pod in kube cluster"
:task (p/exec "kubectl delete -k .")}}}