-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
116 lines (106 loc) · 3.78 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
variables:
# Gitlab
GIT_DEPTH: 100
FALCO_OPS_IMAGE: 'registry.gitlab.com/appenin/falco-ops:latest'
# Don't forget to change the '.trigger-rules-common' and '.trigger_merge_on_master' rules if you change the app_version_commit message!
APP_VERSION_COMMIT_MESSAGE_PREFIX: 'Update application version'
# Deployment
FALCO_OPS_BRANCH: 'master'
# Ansible
ANSIBLE_FORCE_COLOR: 'true'
stages:
- quality
- track-version
- deploy-to-production
.trigger_merge_on_master: &trigger_merge_on_master
rules:
# Pipeline based on the commit "APP_VERSION_COMMIT_MESSAGE" does not run versioning and staging deployment
# Gitlab CI does not support variable inside Regex => '$CI_COMMIT_TITLE =~ /Update application version.*/' instead of '$CI_COMMIT_TITLE =~ /$$APP_VERSION_COMMIT_MESSAGE_PREFIX.*/'
- if: '$CI_COMMIT_TITLE =~ /Update application version.*/'
when: never
# Staging versioning and deployment is only triggered from CI_DEFAULT_BRANCH
- if: '$CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH'
when: on_success
.trigger_deployment_from_merge_request: &trigger_deployment_from_merge_request
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: 'manual'
.trigger_deployment_from_tag: &trigger_deployment_from_tag
rules:
# Don't deploy from the master pipeline, as we want to deploy from the tag pipeline instead
- if: $CI_COMMIT_BRANCH
when: never
- if: $CI_COMMIT_TAG
.trigger_merge_request: &trigger_merge_request
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: 'always'
check-syntax:
interruptible: true
stage: quality
extends:
- .trigger_merge_request
script:
- yarn install --frozen-lockfile
- yarn lint
update-application-version:
stage: track-version
extends:
- .trigger_merge_on_master
before_script:
- git config --global user.email "[email protected]"
- git config --global user.name "Appenin CI User"
script:
- git fetch origin && git checkout -B "$CI_COMMIT_REF_NAME" "origin/$CI_COMMIT_REF_NAME"
- yarn version patch
- git add package.json
- NEW_APPLICATION_VERSION=$(node -p "require('./package').version")
- APP_VERSION_COMMIT_MESSAGE="$APP_VERSION_COMMIT_MESSAGE_PREFIX to $NEW_APPLICATION_VERSION"
- git commit -m "$APP_VERSION_COMMIT_MESSAGE"
- git tag -f $NEW_APPLICATION_VERSION
- git push --atomic https://${APPENIN_CI_USER}:${APPENIN_CI_TOKEN}@gitlab.com/appenin/falco-webmap.git $CI_COMMIT_REF_NAME $NEW_APPLICATION_VERSION
.deploy-webmap: &deploy-webmap
image:
name: '$FALCO_OPS_IMAGE'
pull_policy: always
variables:
APPLICATION_VERSION: ''
before_script:
- eval $(ssh-agent -s)
- mkdir -p ~/.ssh/sockets
- chmod -R 700 ~/.ssh
- cp scripts/ssh.config ~/.ssh/config
- chmod 400 $SSH_INF_MGR_KEY && ssh-add $SSH_INF_MGR_KEY
- gpg --import $GPG_INF_MGR_KEY
- export ANSIBLE_HOST_KEY_CHECKING=False
script:
- chmod 750 scripts/launch-deployment.sh
- scripts/launch-deployment.sh
### Disabled until we have a development environment!
# deploy-to-development:
# stage: deploy-to-development
# extends:
# - .trigger_deployment_from_merge_request
# - .deploy-webmap
# environment:
# name: development/webmap
# url: https://carto.appenin.fr
# variables:
# APPLICATION_VERSION: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
# DEPLOY_ENVIRONMENT: 'development'
# JOB_MONITORING_URL: $CI_JOB_URL
# ZERO_DOWNTIME: 'yes'
deploy-to-production:
stage: deploy-to-production
extends:
- .trigger_deployment_from_tag
- .deploy-webmap
environment:
name: production/webmap
url: https://carto.appenin.fr
variables:
APPLICATION_VERSION: $CI_COMMIT_TAG
DEPLOY_ENVIRONMENT: 'production'
JOB_MONITORING_URL: $CI_JOB_URL
ZERO_DOWNTIME: 'yes'
when: 'manual'