forked from CSCfi/fairdata-metax
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
146 lines (132 loc) · 3.79 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
variables:
GITLAB_ENV: test
default:
tags:
- shell
# ~~~~~~~~~~~~~~~~~~~~~~~~
stages:
- clean
- deploy
- test
- update
- clean_env
# ~~~~~~~~~~~~~~~~~~~~~~~~
job_clean_previous_build:
stage: clean
environment: $GITLAB_ENV
script:
- ansible-playbook -i $ANSIBLE_INVENTORY $DELETE_PLAYBOOK --vault-id $ANSIBLE_VAULT_FILE
rules:
- if: $CI_COMMIT_BRANCH =~ /^(master)$/
- if: $CI_PIPELINE_SOURCE =~ /^(web)$/
# ~~~~~~~~~~~~~~~~~~~~~~~~
# Deploy
include:
- project: fairdata/fairdata-ci
ref: master
file:
- /templates/deploy.yml
rules:
- if: $CI_COMMIT_BRANCH =~ /^(master)$/
- if: $CI_PIPELINE_SOURCE =~ /^(web)$/
# ~~~~~~~~~~~~~~~~~~~~~~~~
job_update:
stage: update
environment: $GITLAB_ENV
script:
- ansible-playbook -i $ANSIBLE_INVENTORY $UPDATE_PROXY_PLAYBOOK --vault-id $ANSIBLE_VAULT_FILE
- ansible-playbook -i $ANSIBLE_INVENTORY $MANAGE_PLAYBOOK --vault-id $ANSIBLE_VAULT_FILE
rules:
- if: $CI_COMMIT_BRANCH =~ /^(master)$/
- if: $CI_PIPELINE_SOURCE =~ /^(web)$/
# ~~~~~~~~~~~~~~~~~~~~~~~~
job_integration_test:
environment: $GITLAB_ENV
stage: test
tags:
- docker
image:
name: python:3.8
services:
- postgres:9.6
- rabbitmq:3
- redis:latest
- name: elasticsearch:7.9.2
alias: elasticsearch
command: [ "bin/elasticsearch", "-Expack.security.enabled=false", "-Ediscovery.type=single-node" ]
variables:
POSTGRES_USER: metax_user
POSTGRES_PASSWORD: password
POSTGRES_DB: metax_db
METAX_DATABASE: metax_db
METAX_DATABASE_PASSWORD: password
METAX_DATABASE_USER: metax_user
METAX_DATABASE_HOST: postgres
ELASTIC_SEARCH_HOSTS: elasticsearch
RABBIT_MQ_HOSTS: rabbitmq
REDIS_HOST: redis
REDIS_PORT: 6379
DJANGO_SECRET_KEY: django-insecure-22388&4#2_#u0e%$%!)5vo3mpys)#f7@vsk9az354!jgze--&e
DJANGO_ENV: unittests
script:
- apt-get update && apt-get install -y xqilla libxerces-c-dev build-essential libssl-dev libffi-dev python-dev libxqilla-dev
- mkdir -p /var/log/metax-api/errors
- pip install -r requirements.txt
- cd src
- python manage.py first_time_setup
- coverage run manage.py test --parallel
- coverage combine
- coverage report -m
- coverage xml
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: src/coverage.xml
paths:
- src/coverage.xml
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME !~ /^(master|release)$/
- if: $CI_COMMIT_BRANCH =~ /^(master)$/
- if: $CI_PIPELINE_SOURCE == "web"
job_sonarqube_check:
tags:
- docker
stage: test
image:
name: sonarsource/sonar-scanner-cli:latest
entrypoint: [""]
variables:
SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" # Defines the location of the analysis task cache
GIT_DEPTH: "0" # Tells git to fetch all the branches of the project, required by the analysis task
cache:
key: "${CI_JOB_NAME}"
paths:
- .sonar/cache
script:
- sonar-scanner
allow_failure: true
needs:
- job: job_integration_test
artifacts: true
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
allow_failure: true
- if: $CI_COMMIT_BRANCH =~ /^(master)$/ && $CI_PIPELINE_SOURCE !~ /^(web)$/
allow_failure: true
- if: $CI_COMMIT_BRANCH =~ /^(release)$/
# ~~~~~~~~~~~~~~~~~~~~~~~~
job_clean_gitlab_env:
environment:
name: $GITLAB_ENV
action: stop
stage: clean_env
variables:
GIT_STRATEGY: none
script:
- echo "Cleaning deleted branches from environments"
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME !~ /^(master)$/
- if: $CI_COMMIT_BRANCH =~ /^(master)$/
- if: $CI_COMMIT_BRANCH =~ /^(release)$/
when: never