-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
126 lines (116 loc) · 3.62 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
image: 'python:3.6.9-buster'
flake8:
script:
- pip install -r requirements-dev.txt
- flake8
black:
script:
- pip install -r requirements-dev.txt
- black --check .
isort:
script:
- pip install -r requirements-dev.txt -r requirements.txt -r requirements-tests.txt
- isort -rc --check-only .
migrations:
services:
- name: postgres:11.5
alias: db
variables:
POSTGRES_DB: ci_db
POSTGRES_USER: ci_runner
POSTGRES_PASSWORD: "ci_pass"
MOSE_DATABASE_NAME: "$POSTGRES_DB"
MOSE_DATABASE_USER: "$POSTGRES_USER"
MOSE_DATABASE_PASSWORD: "$POSTGRES_PASSWORD"
MOSE_DATABASE_HOST: 'db'
script:
- pip install -r requirements.txt
- pip freeze
# exits with a non-zero status when model changes without migrations are detected.
- ./manage.py makemigrations --check
- ./manage.py migrate
- ./manage.py populate_db
tests:
services:
- name: postgres:11.5
alias: db
variables:
POSTGRES_DB: ci_db
POSTGRES_USER: ci_runner
POSTGRES_PASSWORD: "ci_pass"
MOSE_DATABASE_NAME: "$POSTGRES_DB"
MOSE_DATABASE_USER: "$POSTGRES_USER"
MOSE_DATABASE_PASSWORD: "$POSTGRES_PASSWORD"
MOSE_DATABASE_HOST: 'db'
MOSE_TEST_SELENIUM_HEADLESS: '1'
script:
# install firefox and X virtual framebuffer
- apt-get update -qq
- apt-get install -qq -y firefox-esr xvfb
- firefox --version
# install firefox driver
- wget https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz
- tar -xvzf geckodriver-v0.26.0-linux64.tar.gz
- chmod +x geckodriver
- mv geckodriver /usr/local/bin/
- pip install -r requirements.txt -r requirements-tests.txt
- pip freeze
- coverage run manage.py test --no-input
- coverage report
# run coverage export only if variable with token is set
- '[ -z ${COVERALLS_REPO_TOKEN+x} ] || coveralls'
deploy-to-vps:
stage: deploy
environment:
name: vps
only:
- master
- deploy
when: manual
variables:
HOST: "artslob@${MOSE_DEPLOY_VPS_IP}"
PORT: "$MOSE_DEPLOY_VPS_PORT"
MOSE_PROJECT: "/home/artslob/mose-project"
before_script:
- apt-get update -qq
- apt-get install -qq rsync
- eval "$(ssh-agent -s)"
- ssh-add <(echo "$MOSE_DEPLOY_SSH_PRIVATE_KEY")
- ssh-add -l
- ssh-add -L
script:
- mkdir -p ~/.ssh/
- ssh-keyscan "$MOSE_DEPLOY_VPS_IP" >> ~/.ssh/known_hosts
- ssh "$HOST" -p "$PORT" mkdir -p "$MOSE_PROJECT"
- rsync -chaz --stats --port "${PORT}" "$(pwd)/" "$HOST":"$MOSE_PROJECT/mose"
- ssh "$HOST" -p "$PORT" "MOSE_PROJECT=$MOSE_PROJECT bash -s" < ./.ci/deploy.sh
deploy-to-helios:
stage: deploy
environment:
name: helios
only:
- master
- deploy
when: manual
variables:
HOST: "s191951@${MOSE_DEPLOY_HELIOS_IP}"
PORT: "$MOSE_DEPLOY_HELIOS_PORT"
MOSE_PROJECT: "/home/s191951/mose-project"
before_script:
- echo "$MOSE_DEPLOY_HELIOS_PORT"
- echo "$PORT"
- apt-get update -qq
- apt-get install -qq rsync
- eval "$(ssh-agent -s)"
- ssh-add <(echo "$MOSE_DEPLOY_SSH_PRIVATE_KEY")
- ssh-add -l
- ssh-add -L
script:
- 'ssh -o StrictHostKeyChecking=no "$HOST" -p "$PORT" :'
- mkdir -p ~/.ssh/
- ssh-keyscan "$MOSE_DEPLOY_HELIOS_IP" >> ~/.ssh/known_hosts
- cat ~/.ssh/known_hosts
- ssh "$HOST" -p "$PORT" mkdir -p "$MOSE_PROJECT"
# - rsync -chaz --stats -e "ssh -p ${PORT}" "$(pwd)/" "$HOST":"$MOSE_PROJECT/mose"
- scp -q -r -P "$PORT" "$(pwd)/." "$HOST":"$MOSE_PROJECT/mose"
- echo "source .profile; $(cat .ci/deploy.sh)" | ssh "$HOST" -p "$PORT" 'MOSE_PROJECT=/home/s191951/mose-project bash -s'