-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathMakefile
More file actions
134 lines (97 loc) · 4.27 KB
/
Makefile
File metadata and controls
134 lines (97 loc) · 4.27 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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
API_DIR = ../estela-api
QUEUING_DIR = ../queueing
WEB_DIR = ../estela-web
API_POD = $$(kubectl get pod -l app=estela-django-api -o jsonpath="{.items[0].metadata.name}")
API_IP = $$(kubectl get services -n $${NAMESPACE} estela-django-api-service --output jsonpath='{.spec.clusterIP}')
LOCAL_API_IP = $$(kubectl get services -n $${NAMESPACE} estela-django-api-service --output jsonpath='{.status.loadBalancer.ingress[0].ip}')
RESOURCES = db registry minio zookeeper kafka mongodb
SERVICES ?= django-api celery-worker celery-beat redis build-project project-downloader
PLATFORM ?= linux/$(shell uname -m)
.PHONY: resources
resources:
-minikube start
-echo "$$(minikube ssh 'grep host.minikube.internal /etc/hosts | cut -f1')" > tmp
-python3 local/start-environment.py
-docker compose -f local/docker-compose.yaml up ${RESOURCES} -d
-minikube delete
-. ./local/.env && minikube start \
--insecure-registry=$${HOST_REGISTRY} \
--cpus="4" \
--memory="3500mb" \
--disk-size="20000mb"
-minikube addons enable metrics-server
.PHONY: delete-resources
delete-resources:
-docker compose -f local/docker-compose.yaml down
-minikube delete
.PHONY: build-all-images
build-all-images:
-. ./local/.env && for service in $(SERVICES); do \
cd $(API_DIR) && docker build .. --file docker-conf/Dockerfile-$$service --tag $${LOCAL_REGISTRY}/estela-$$service:latest; \
done
-. ./local/.env && cd $(QUEUING_DIR) && docker build .. --file Dockerfile --tag $${LOCAL_REGISTRY}/estela-consumer:latest
.PHONY: upload-all-images
upload-all-images:
-. ./local/.env && for image in $(SERVICES); do \
docker push $${LOCAL_REGISTRY}/estela-$$image:latest; \
done
-. ./local/.env && docker push $${LOCAL_REGISTRY}/estela-consumer:latest;
.PHONY: images
images: build-all-images upload-all-images
.PHONY: install
install:
-. ./local/.env && cd helm-chart && \
helm upgrade --install $${RELEASE_NAME} --create-namespace --debug --namespace=$${NAMESPACE} .
.PHONY: uninstall
uninstall:
-. ./local/.env && cd helm-chart && helm uninstall $${RELEASE_NAME} -n $${NAMESPACE}
MINIO_NETWORK = $$(docker inspect estela_storage --format '{{range $$k,$$v := .NetworkSettings.Networks}}{{$$k}}{{end}}')
MINIO_IP = $$(docker inspect estela_storage --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}')
BUCKET_NAME = $$(grep "^BUCKET_NAME_PROJECTS:" helm-chart/values.yaml | awk '{print $$2}' | tr -d '"' | tr -d "'")
.PHONY: setup-minio-bucket
setup-minio-bucket:
-docker run --rm --network $(MINIO_NETWORK) --entrypoint sh minio/mc -c \
"mc alias set myminio http://$(MINIO_IP):9000 minioadmin minioadmin && \
mc mb myminio/$(BUCKET_NAME) --ignore-existing && \
mc anonymous set download myminio/$(BUCKET_NAME)"
.PHONY: update-api-ip
update-api-ip:
-. ./local/.env && cd helm-chart && \
helm upgrade --install $${RELEASE_NAME} . --set DJANGO_API_HOST=$(API_IP) -n $${NAMESPACE}
-. ./local/.env && kubectl rollout restart deploy estela-django-api -n $${NAMESPACE}
-. ./local/.env && kubectl wait deployment -n $${NAMESPACE} estela-django-api --for condition=Available=True --timeout=600s
-sleep 10
.PHONY: restart-celery-beat
restart-celery-beat:
-. ./local/.env && kubectl rollout restart deploy estela-celery-beat -n $${NAMESPACE}
.PHONY: create-minio-superuser
create-minio-superuser:
-kubectl exec $(API_POD) -- bash -c \
"echo \"from django.contrib.auth.models import User; User.objects.create_superuser('deploy_manager', '', 'estela12345')\" | python manage.py shell"
.PHONY: makemigrations
makemigrations:
-kubectl exec $(API_POD) -- python manage.py makemigrations
.PHONY: migrate
migrate:
-kubectl exec $(API_POD) -- python manage.py migrate
.PHONY: createsuperuser
createsuperuser:
-kubectl exec --stdin --tty $(API_POD) -- python manage.py createsuperuser
.PHONY: setup
setup: update-api-ip makemigrations migrate restart-celery-beat create-minio-superuser
.PHONY: build-web
build-web:
-. ./local/.env && cd $(WEB_DIR) && \
echo "REACT_APP_API_BASE_URL=http://$(LOCAL_API_IP)" > .env.development
-cd $(WEB_DIR) && yarn install
.PHONY: run-web
run-web:
-cd $(WEB_DIR) && yarn start
.PHONY: start
start:
-docker compose -f local/docker-compose.yaml up ${RESOURCES} -d
-minikube start
.PHONY: stop
stop:
-minikube stop
-docker compose -f local/docker-compose.yaml stop