16
16
PIPE_DEV_NULL =
17
17
endif
18
18
19
+ ILAB_KUBE_CONTEXT? =kind-instructlab-ui
20
+ ILAB_KUBE_NAMESPACE? =instructlab
21
+ ILAB_KUBE_CLUSTER_NAME? =instructlab-ui
22
+ TAG =$(shell git rev-parse HEAD)
23
+ # #@ Development - Helper commands for development
19
24
.PHONY : md-lint
20
25
md-lint : # # Lint markdown files
21
26
$(ECHO_PREFIX ) printf " %-12s ./...\n" " [MD LINT]"
22
- $(CMD_PREFIX ) podman run --rm -v $(CURDIR ) :/workdir docker.io/davidanson/markdownlint-cli2:v0.6.0 > /dev/null
27
+ $(CMD_PREFIX ) docker run --rm -v $(CURDIR ) :/workdir docker.io/davidanson/markdownlint-cli2:v0.6.0 > /dev/null
23
28
24
29
.PHONY : action-lint
25
30
action-lint : # # Lint GitHub Action workflows
@@ -31,6 +36,91 @@ action-lint: ## Lint GitHub Action workflows
31
36
fi
32
37
$(CMD_PREFIX ) actionlint -color
33
38
39
+ # #@ Artifacts - Command to build and publish artifacts
34
40
ui-image : Containerfile # # Build continaer image for the InstructLab UI
35
- $(ECHO_PREFIX ) printf " %-12s Containerfile\n" " [PODMAN]"
36
- $(CMD_PREFIX ) podman build -f Containerfile -t ghcr.io/instructlab/ui/ui:main .
41
+ $(ECHO_PREFIX ) printf " %-12s Containerfile\n" " [docker]"
42
+ $(CMD_PREFIX ) docker build -f Containerfile -t ghcr.io/instructlab/ui/ui:$(TAG ) .
43
+ $(CMD_PREFIX ) docker tag ghcr.io/instructlab/ui/ui:$(TAG ) ghcr.io/instructlab/ui/ui:main
44
+
45
+
46
+ # #@ Kubernetes - kind dev environment
47
+ .PHONY : check-kind
48
+ check-kind :
49
+ $(CMD_PREFIX ) if [ -z " $( shell which kind) " ]; then \
50
+ echo " Please install kind and then start the kind dev environment." ; \
51
+ echo " https://kind.sigs.k8s.io/" ; \
52
+ exit 1 ; \
53
+ fi
54
+
55
+ .PHONY : check-kubectl
56
+ check-kubectl :
57
+ $(CMD_PREFIX ) if [ -z " $( shell which kubectl) " ]; then \
58
+ echo " Please install kubectl" ; \
59
+ echo " https://kubernetes.io/docs/tasks/tools/#kubectl" ; \
60
+ exit 1 ; \
61
+ fi
62
+
63
+ .PHONY : load-images
64
+ load-images : # # Load images onto kind
65
+ $(CMD_PREFIX ) kind load --name $(ILAB_KUBE_CLUSTER_NAME ) docker-image ghcr.io/instructlab/ui/ui:main
66
+
67
+ .PHONY : stop-dev
68
+ stop-dev : check-kind # # Stop the kind cluster to destroy the development environment
69
+ $(CMD_PREFIX ) kind delete cluster --name $(ILAB_KUBE_CLUSTER_NAME )
70
+
71
+ .PHONY : setup-kind
72
+ setup-kind : check-kind check-kubectl stop-dev # # Create a kind cluster with ingress enabled
73
+ $(CMD_PREFIX ) kind create cluster --config ./deploy/k8s/kind.yaml
74
+ $(CMD_PREFIX ) kubectl cluster-info
75
+ $(CMD_PREFIX ) kubectl --context=$(ILAB_KUBE_CONTEXT ) apply -f ./deploy/k8s/kind-ingress.yaml
76
+
77
+ .PHONY : wait-for-readiness
78
+ wait-for-readiness : # Wait for operators to be ready
79
+ $(CMD_PREFIX ) kubectl --context=$(ILAB_KUBE_CONTEXT ) -n ingress-nginx rollout restart deployment ingress-nginx-controller
80
+ $(CMD_PREFIX ) kubectl --context=$(ILAB_KUBE_CONTEXT ) -n ingress-nginx rollout status deployment ingress-nginx-controller --timeout=5m
81
+
82
+ .PHONY : deploy
83
+ deploy : wait-for-readiness # # Deploy a InstructLab UI development stack onto a kubernetes cluster
84
+ $(CMD_PREFIX ) if [ ! -f .env ]; then \
85
+ echo " Please create a .env file in the root of the project." ; \
86
+ exit 1 ; \
87
+ fi
88
+ $(CMD_PREFIX ) yes | cp -rf .env ./deploy/k8s/overlays/kind/.env
89
+ $(CMD_PREFIX ) kubectl --context=$(ILAB_KUBE_CONTEXT ) apply -k ./deploy/k8s/overlays/kind
90
+ $(CMD_PREFIX ) kubectl --context=$(ILAB_KUBE_CONTEXT ) wait --for=condition=Ready pods -n $(ILAB_KUBE_NAMESPACE ) --all -l app.kubernetes.io/part-of=ui --timeout=15m
91
+
92
+ .PHONY : redeploy
93
+ redeploy : ui-image load-images # # Redeploy the InstructLab UI stack onto a kubernetes cluster
94
+ $(CMD_PREFIX ) kubectl --context=$(ILAB_KUBE_CONTEXT ) -n $(ILAB_KUBE_NAMESPACE ) rollout restart deploy/ui
95
+
96
+ .PHONY : undeploy
97
+ undeploy : # # Undeploy the InstructLab UI stack from a kubernetes cluster
98
+ $(CMD_PREFIX ) if [ -f ./deploy/k8s/overlays/kind/.env ]; then \
99
+ rm ./deploy/k8s/overlays/kind/.env ; \
100
+ fi
101
+ $(CMD_PREFIX ) kubectl --context=$(ILAB_KUBE_CONTEXT ) delete namespace $(ILAB_KUBE_NAMESPACE )
102
+
103
+ .PHONY : start-dev # # Run the development environment on kind
104
+ start-dev : setup-kind deploy # # Setup a kind cluster and deploy InstructLab UI on it
105
+
106
+ # #@ OpenShift - UI deployment in OpenShift
107
+ .PHONY : deploy-openshift
108
+ deploy-openshift : # # Deploy the InstructLab UI on OpenShift
109
+ $(CMD_PREFIX ) if [ ! -f .env ]; then \
110
+ echo " Please create a .env file in the root of the project." ; \
111
+ exit 1 ; \
112
+ fi
113
+
114
+ $(CMD_PREFIX) yes | cp -rf .env ./deploy/k8s/overlays/openshift/.env
115
+ $(CMD_PREFIX) oc apply -k ./deploy/k8s/overlays/openshift
116
+ $(CMD_PREFIX) oc wait --for=condition=Ready pods -n $(ILAB_KUBE_NAMESPACE) --all -l app.kubernetes.io/part-of=ui --timeout=15m
117
+
118
+ .PHONY : redeploy-openshift
119
+ redeploy-openshift : deploy-openshift # # Redeploy the InstructLab UI on OpenShift
120
+
121
+ .PHONY : undeploy-openshift
122
+ undeploy-openshift : # # Undeploy the InstructLab UI on OpenShift
123
+ $(CMD_PREFIX ) oc delete -k ./deploy/k8s/overlays/openshift
124
+ $(CMD_PREFIX ) if [ -f ./deploy/k8s/overlays/openshift/.env ]; then \
125
+ rm ./deploy/k8s/overlays/openshift/.env ; \
126
+ fi
0 commit comments