-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
70 lines (61 loc) · 2.51 KB
/
.gitlab-ci.yml
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
stages:
- build
- deploy
.stg-vars:
variables:
ENVIRONMENT: stg
CORE_IMAGE: ${DOCKER_REGISTRY}/aic22-backend/core:stg
STATIC_IMAGE: ${DOCKER_REGISTRY}/aic22-backend/static:stg
CORE_CONTAINER_NAME: aic_backend_core_stg
STATIC_CONTAINER_NAME: aic_backend_static_stg
SWARM_MASTER_NODE: ${STG_SWARM_MASTER_NODE}
rules:
- if: '$CI_COMMIT_BRANCH == "dev"'
.production-vars:
variables:
ENVIRONMENT: prod
CORE_IMAGE: ${DOCKER_REGISTRY}/aic22-backend/core:${CI_COMMIT_SHORT_SHA}
STATIC_IMAGE: ${DOCKER_REGISTRY}/aic22-backend/static:${CI_COMMIT_SHORT_SHA}
CORE_CONTAINER_NAME: aic_backend_core_production
STATIC_CONTAINER_NAME: aic_backend_static_production
SWARM_MASTER_NODE: ${PRD_SWARM_MASTER_NODE}
rules:
- if: '$CI_COMMIT_BRANCH == "master"'
.build:
stage: build
image: ${DOCKER_REGISTRY}/docker:20.10.3-dind
tags:
- docker
# before_script:
# - docker login -u $AIC_DOCKERID -p $AIC_DOCKERPASS
script:
- docker build -t ${CORE_IMAGE} --target build .
- docker build -t ${STATIC_IMAGE} --target static .
- docker push ${CORE_IMAGE}
- docker push ${STATIC_IMAGE}
.deploy:
stage: deploy
before_script:
- chmod -R 700 $SSH_PRIVATE_KEY
- ssh -i $SSH_PRIVATE_KEY -o "StrictHostKeyChecking=no" ${SWARM_MASTER_NODE} -t "docker pull ${CORE_IMAGE}"
- ssh -i $SSH_PRIVATE_KEY -o "StrictHostKeyChecking=no" ${SWARM_MASTER_NODE} -t "docker pull ${STATIC_IMAGE}"
script:
- ssh -i $SSH_PRIVATE_KEY -o "StrictHostKeyChecking=no" ${SWARM_MASTER_NODE} -t "docker service update --image ${CORE_IMAGE} --constraint-add node.labels.job==backend --mount-add type=volume,source=django-volume,target=/app/media aic_backend_core_${ENVIRONMENT}"
- ssh -i $SSH_PRIVATE_KEY -o "StrictHostKeyChecking=no" ${SWARM_MASTER_NODE} -t "docker service update --image ${STATIC_IMAGE} --constraint-add node.labels.job==backend --mount-add type=volume,source=django-volume,target=/app/media aic_backend_static_${ENVIRONMENT}"
- ssh -i $SSH_PRIVATE_KEY -o "StrictHostKeyChecking=no" ${SWARM_MASTER_NODE} -t "docker service update --image ${CORE_IMAGE} --constraint-add node.labels.job==backend --mount-add type=volume,source=django-volume,target=/app/media --entrypoint 'celery -A AIC22_Backend worker -l info -E --concurrency=10' celery"
stg-build:
extends:
- .stg-vars
- .build
production-build:
extends:
- .production-vars
- .build
stg-deploy:
extends:
- .stg-vars
- .deploy
production-deploy:
extends:
- .production-vars
- .deploy