-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
117 lines (93 loc) · 5.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
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
image: docker:latest
stages:
- build
- deploy_create
- deploy_update
services:
- docker:dind
variables:
MANAGER_HOST: "158.160.109.15"
FILE_VAR: $PREDICTION_CONFIG
build-job:
stage: build
rules:
- changes:
- "**/*"
before_script:
- 'which ssh-agent || ( apt-get install -qq openssh-client )'
- eval $(ssh-agent -s)
- mkdir -p ~/.ssh
- 'echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- ssh olipandrei@${MANAGER_HOST} "docker stop registry"
- ssh olipandrei@${MANAGER_HOST} "docker rm registry"
- ssh olipandrei@${MANAGER_HOST} "docker system prune -a --volumes"
- ssh olipandrei@${MANAGER_HOST} "docker run -d -p 4000:5000 --restart=always --name registry registry:2"
script:
- echo "build job start!"
- echo "scp start"
- scp -prq ynyt/. olipandrei@${MANAGER_HOST}:/home/olipandrei/ynyt
- scp -prq prediction/. olipandrei@${MANAGER_HOST}:/home/olipandrei/prediction
- scp -prq artifacts/. olipandrei@${MANAGER_HOST}:/home/olipandrei/artifacts
- scp -prq dashboard/. olipandrei@${MANAGER_HOST}:/home/olipandrei/dashboard
- scp -prq data/. olipandrei@${MANAGER_HOST}:/home/olipandrei/data
- scp -r config.json olipandrei@${MANAGER_HOST}:/home/olipandrei/config.json
- scp -prq updater/. olipandrei@${MANAGER_HOST}:/home/olipandrei/updater
- echo "dashboard-img start"
- ssh olipandrei@${MANAGER_HOST} "docker build -t ynyt_app -f ./dashboard/Dockerfile ."
- ssh olipandrei@${MANAGER_HOST} "docker tag ynyt_app:latest ${MANAGER_HOST}:4000/ynyt_app:latest"
- ssh olipandrei@${MANAGER_HOST} "docker push ${MANAGER_HOST}:4000/ynyt_app:latest"
- echo "updater-img start"
- ssh olipandrei@${MANAGER_HOST} "docker build -t ynyt_updater -f ./updater/Dockerfile ."
- ssh olipandrei@${MANAGER_HOST} "docker tag ynyt_updater:latest ${MANAGER_HOST}:4000/ynyt_updater:latest"
- ssh olipandrei@${MANAGER_HOST} "docker push ${MANAGER_HOST}:4000/ynyt_updater:latest"
- echo "predict-img start"
- ssh olipandrei@${MANAGER_HOST} "docker build -t ynyt_prediction -f ./prediction/Dockerfile ."
- ssh olipandrei@${MANAGER_HOST} "docker tag ynyt_prediction:latest ${MANAGER_HOST}:4000/ynyt_prediction:latest"
- ssh olipandrei@${MANAGER_HOST} "docker push ${MANAGER_HOST}:4000/ynyt_prediction:latest"
- echo "predict-cron-img start"
- ssh olipandrei@${MANAGER_HOST} "docker build -t ynyt_prediction_cron -f ./prediction/Dockerfile.cron ."
- ssh olipandrei@${MANAGER_HOST} "docker tag ynyt_prediction_cron:latest ${MANAGER_HOST}:4000/ynyt_prediction_cron:latest"
- ssh olipandrei@${MANAGER_HOST} "docker push ${MANAGER_HOST}:4000/ynyt_prediction_cron:latest"
- echo "build job complete!"
after_script:
- ssh -T olipandrei@${MANAGER_HOST} "rm -r /home/olipandrei/ynyt"
- ssh -T olipandrei@${MANAGER_HOST} "rm -r /home/olipandrei/prediction"
ynyt_create:
stage: deploy_create
when: manual
before_script:
- 'which ssh-agent || ( apt-get install -qq openssh-client )'
- eval $(ssh-agent -s)
- mkdir -p ~/.ssh
- 'echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- scp -r prediction_stack.yml olipandrei@${MANAGER_HOST}:/home/olipandrei/prediction_stack.yml
- cat $FILE_VAR >> /builds/olip78/ynyt.gi.tmp/.env
- scp -r /builds/olip78/ynyt.gi.tmp/.env olipandrei@${MANAGER_HOST}:/home/olipandrei/.env
script:
- echo "Deploying app_dashboard..."
- ssh olipandrei@${MANAGER_HOST} "docker network create --driver overlay app_frontend"
- ssh olipandrei@${MANAGER_HOST} "docker network create --driver overlay app_backend"
- ssh olipandrei@${MANAGER_HOST} "docker volume create app_data"
- ssh olipandrei@${MANAGER_HOST} "docker service create --name updater --network app_backend -p 8081:8081 --replicas 1 --mount type=volume,src=app_data,dst=/usr/src/results {MANAGER_HOST}:4000/ynyt_updater:latest"
- ssh olipandrei@${MANAGER_HOST} "MANAGER_HOST=${MANAGER_HOST} docker stack deploy -c ./prediction_stack.yml prediction"
- ssh olipandrei@${MANAGER_HOST} "docker run --name prediction --env-file /home/olipandrei/.env --rm -d ${MANAGER_HOST}:4000/ynyt_prediction"
- ssh olipandrei@${MANAGER_HOST} "docker service create --name dashboard --network app_frontend -p 8080:8080 --replicas 1 --mount type=volume,src=app_data,dst=/usr/src/results ${MANAGER_HOST}:4000/ynyt_app:latest"
ynyt_update:
stage: deploy_update
before_script:
- 'which ssh-agent || ( apt-get install -qq openssh-client )'
- eval $(ssh-agent -s)
- mkdir -p ~/.ssh
- 'echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- scp -r prediction_stack.yml olipandrei@${MANAGER_HOST}:/home/olipandrei/prediction_stack.yml
- cat $FILE_VAR >> /builds/olip78/ynyt.gi.tmp/.env
- scp -r /builds/olip78/ynyt.gi.tmp/.env olipandrei@${MANAGER_HOST}:/home/olipandrei/.env
script:
- echo "Updating app_dashboard..."
- ssh olipandrei@${MANAGER_HOST} "docker service update --image ${MANAGER_HOST}:4000/ynyt_updater:latest updater"
- ssh olipandrei@${MANAGER_HOST} "MANAGER_HOST=${MANAGER_HOST} docker stack deploy -c ./prediction_stack.yml prediction"
- ssh olipandrei@${MANAGER_HOST} "docker run --name prediction --env-file /home/olipandrei/.env --rm -d ${MANAGER_HOST}:4000/ynyt_prediction"
- ssh olipandrei@${MANAGER_HOST} "docker service update --image ${MANAGER_HOST}:4000/ynyt_app:latest dashboard"