-
Notifications
You must be signed in to change notification settings - Fork 2
/
.gitlab-ci.yml
182 lines (173 loc) · 5.06 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
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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
stages: [build, test, deploy, production]
build:
image: docker:dind
stage: build
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
test:
image:
name: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
entrypoint: ["/bin/sh", "-c"]
stage: test
variables:
POSTGRES_DB: electeez
POSTGRES_USER: electeez
POSTGRES_PASSWORD: test
DB_HOST: postgres
DB_USER: electeez
DB_PASS: test
DB_NAME: electeez
DB_ENGINE: django.db.backends.postgresql
MEMCACHED_HOST: memcached
DJANGO_SETTINGS_MODULE: electis.settings
services:
- name: yourlabs/tezos
alias: tz
- name: memcached:1.6-alpine
- name: postgres:latest
command:
- "postgres"
- "-c"
- "log_min_duration_statement=300"
script:
- pytest -sv
.deploy: &deploy
image: yourlabs/ansible
before_script:
- mkdir -p ~/.ssh; echo "$CI_SSH_KEY" > ~/.ssh/id_ed25519; chmod 700 ~/.ssh; chmod 600 ~/.ssh/*
- export $(echo $CI_ENV | xargs)
- export $(echo $SMTP | xargs)
script:
- set -x
- export HOST=$(echo $CI_ENVIRONMENT_URL | sed s@^.*://@@)
- export PROTO=$(echo $CI_ENVIRONMENT_URL | sed s@:.*@@)
- export CI_PROJECT_SLUG=$(echo $CI_PROJECT_NAME | sed s@[/.]@-@g)
- export ANSIBLE_HOST_KEY_CHECKING=False
- bigsudo yourlabs.compose
compose_django_build=
compose_balance_build=
compose_write_build=
compose_sync_build=
compose_django_image=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
compose_sync_image=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
compose_write_image=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
compose_balance_image=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
wait_grep=spawned.uWSGI.worker.1
$DEPLOY
deploy@$HOST
-vv
| tee deploy.log
- grep unreachable=0 deploy.log &> /dev/null
- grep failed=0 deploy.log &> /dev/null
review-deploy-electis:
<<: *deploy
stage: test
environment:
name: test/${CI_COMMIT_REF_NAME}-electis
url: https://${CI_ENVIRONMENT_SLUG}.ci.electis.app
variables:
DJANGO_APP: electis
DJANGO_SETTINGS_MODULE: electis.settings
DEPLOY: >
compose=docker-compose.yml,docker-compose.traefik.yml
lifetime=86400
project=${CI_ENVIRONMENT_SLUG}-electis
except:
- tags
- master
- neuilly
review-deploy-neuilly:
<<: *deploy
stage: test
environment:
name: test/${CI_COMMIT_REF_NAME}-neuilly
url: https://${CI_ENVIRONMENT_SLUG}.ci.electis.app
variables:
DJANGO_APP: neuilly
DJANGO_SETTINGS_MODULE: neuilly.settings
DEPLOY: >
compose=docker-compose.yml,docker-compose.traefik.yml
lifetime=86400
project=${CI_ENVIRONMENT_SLUG}-neuilly
except:
- tags
- master
- neuilly
neuilly-deploy:
<<: *deploy
stage: deploy
environment:
name: neuilly
url: https://neuilly.ci.electis.app
before_script:
- mkdir -p ~/.ssh; echo "$CI_SSH_KEY" > ~/.ssh/id_ed25519; chmod 700 ~/.ssh; chmod 600 ~/.ssh/*
- export $(echo $NEUILLY_ENV | xargs)
- export $(echo $SMTP | xargs)
variables:
DJANGO_APP: neuilly
DJANGO_SETTINGS_MODULE: neuilly.settings
DEPLOY: >
compose=docker-compose.yml,docker-compose.traefik.yml,docker-compose.persist.yml
home=/home/neuilly
only:
refs:
- master
master-deploy:
<<: *deploy
stage: deploy
environment:
name: master
url: https://master.ci.electis.app
before_script:
- mkdir -p ~/.ssh; echo "$CI_SSH_KEY" > ~/.ssh/id_ed25519; chmod 700 ~/.ssh; chmod 600 ~/.ssh/*
- export $(echo $MASTER_ENV | xargs)
- export $(echo $SMTP | xargs)
variables:
DJANGO_APP: electis
DJANGO_SETTINGS_MODULE: electis.settings
DEPLOY: >
compose=docker-compose.yml,docker-compose.traefik.yml,docker-compose.persist.yml,docker-compose.ipfs.yml
home=/home/master
only:
refs:
- master
production-deploy:
<<: *deploy
before_script:
- mkdir -p ~/.ssh; echo "$PRODUCTION_SSH_KEY" > ~/.ssh/id_ed25519; chmod 700 ~/.ssh; chmod 600 ~/.ssh/*
- export $(echo $PROD_ENV | xargs)
- export $(echo $SMTP | xargs)
stage: production
when: manual
environment:
name: production
url: https://electis.app
variables:
DEPLOY: >
compose=docker-compose.yml,docker-compose.traefik.yml,docker-compose.persist.yml,docker-compose.ipfs.yml
home=/home/$CI_ENVIRONMENT_NAME
only:
refs:
- master
- production
neuilly-production-deploy:
<<: *deploy
before_script:
- mkdir -p ~/.ssh; echo "$NEUILLY_PRODUCTION_SSH_KEY" > ~/.ssh/id_ed25519; chmod 700 ~/.ssh; chmod 600 ~/.ssh/*
- export $(echo $NEUILLY_PRODUCTION_ENV | xargs)
stage: production
when: manual
environment:
name: neuilly-production
url: https://neuillyvote.fr
variables:
DEPLOY: >
compose=docker-compose.yml,docker-compose.traefik.yml,docker-compose.persist.yml,docker-compose.ipfs.yml
home=/home/production
only:
refs:
- master
- production
- neuilly-production