-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMakefile
More file actions
166 lines (122 loc) · 3.51 KB
/
Makefile
File metadata and controls
166 lines (122 loc) · 3.51 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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
USER ?= user@gmail.com
PASS ?= patata
MONGODB_ATLAS ?= mongodb+srv://<username>:<password>@<cluster>.mongodb.net
DOCKER_COMPOSE_TEST=docker-compose -f docker-compose.test.yml
DOCKER_COMPOSE_PROD=docker-compose -f docker-compose.prod.yml
VERSION=0.0.1
DOCKER_NAMESPACE?=lucferbux
DOCKER_TAG_SNAPSHOT=$(shell echo VERSION)-$(shell git rev-parse --short HEAD)-SNAPSHOT
# Init Scripts
.PHONY: dev-api
dev-api:
cd api && npm run dev
.PHONY: dev-ui
dev-ui:
cd ui && npm run start
.PHONY: dev-ui-secure
dev-ui-secure:
cd ui && npm run start-secure
.PHONY: dev-start
dev-start:
make -j 3 mongo-start dev-api dev-ui
# DB Scripts
.PHONY: dev-populate-data
dev-populate-data:
cd scripts && ./mongoimport.sh
.PHONY: dev-delete-data
dev-delete-data:
cd scripts && ./mongodelete.sh
.PHONY: mongo-start
mongo-start:
cd scripts && ./mongostart.sh
.PHONY: mongo-export
mongo-export:
cd scripts && ./mongoexport.sh
.PHONY: dev-bbdd-start-populate
dev-bbdd-start-populate: mongo-start dev-populate-data
.PHONY: generate-password
generate-password:
cd scripts && ./generatepass.sh $(USER) $(PASS)
.PHONY: import-atlass
import-atlass:
cd scripts && ./mongoimportatlass.sh $(MONGODB_ATLAS)
# Installation scripts
.PHONY: install-ui
install-ui:
cd ui && npm install
.PHONY: install-api
install-api:
cd api && npm install
.PHONY: install-dependencies
install-dependencies: npm install
# Audit scripts
.PHONY: audit-frontend
audit-frontend:
cd ui && npm audit
.PHONY: audit-api
audit-api:
cd api && npm audit
# Testing
.PHONY: story-book
story-book:
cd ui && npm run storybook
.PHONY: test
test:
CI=true npm run test
# Docker
.PHONY: docker-build-images
docker-build-images:
docker build -t $(DOCKER_NAMESPACE)/api:$(DOCKER_TAG_SNAPSHOT) -f ./api/prod.Dockerfile ./api
docker build -t $(DOCKER_NAMESPACE)/nginx:$(DOCKER_TAG_SNAPSHOT) -f nginx/Dockerfile .
.PHONY: docker-build-deploy-multiplatform
docker-build-deploy-multiplatform:
docker buildx build --platform linux/amd64,linux/arm64 -t $(DOCKER_NAMESPACE)/api:$(DOCKER_TAG_SNAPSHOT) -f ./api/prod.Dockerfile ./api --push
docker buildx build --platform linux/amd64,linux/arm64 -t $(DOCKER_NAMESPACE)/nginx:$(DOCKER_TAG_SNAPSHOT) -f nginx/Dockerfile . --push
.PHONY: docker-deploy
docker-deploy: docker-build-images
for component in api nginx; do \
docker push $(DOCKER_NAMESPACE)/$$component:$(DOCKER_TAG_SNAPSHOT) ; \
done
.PHONY: docker-dev-up
docker-dev-up:
docker-compose up --build -d
.PHONY: docker-prod-up
docker-prod-up:
$(DOCKER_COMPOSE_PROD) up --build
.PHONY: docker-ci-up
docker-ci-up:
$(DOCKER_COMPOSE_TEST) up --build -d
.PHONY: docker-ci-api
docker-ci-api: docker-ci-up
$(DOCKER_COMPOSE_TEST) run node npm run test
$(DOCKER_COMPOSE_TEST) run node npm run lint
# Kubernetes
.PHONY: k8s-create-ns
k8s-create-ns:
kubectl create namespace portfolio-app-local
.PHONY: k8s-deploy
k8s-deploy:
kubectl apply -k delivery/kubernetes/overlays/local
.PHONY: k8s-status
k8s-status:
kubectl get all -n portfolio-app-local
.PHONE: k8s-status-pods
k8s-status-pods:
kubectl get pods -n portfolio-app-local
.PHONE: k8s-delete-all
k8s-delete-all:
kubectl delete -k delivery/kubernetes/overlays/local
.PHONY: k8s-expose-service
k8s-expose-service:
minikube service frontend-nginx-service --url -n portfolio-app-local
# Check /etc/hosts
.PHONY: k8s-ingress
k8s-ingress:
minikube addons enable ingress && minikube tunnel
.PHONY: k8s-dashboard
k8s-dashboard:
minikube dashboard
# Certificates
.PHONY: generate-certificates
generate-certificates:
cd nginx && ./generate-certificates.sh