This repository has been archived by the owner on Nov 15, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
153 lines (141 loc) · 5.05 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
include:
- local: '/templates/build-docker-image-template.yml'
variables:
GIT_SSL_NO_VERIFY: "1"
SBT_OPTS: "-Dsbt.ivy.home=/cache/.ivy2 -Dsbt.boot.credentials=/root/.ivy2/.credentials -Xms512M -Xss2M -Xmx2G"
image: "registry.beta.pole-emploi.fr/perspectives/perspectives/perspectives-ci-base-image:latest"
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- "webapp/ui/node_modules/"
- "/cache/.ivy2"
- "/cache/target"
- "/root/.sbt"
stages:
- 🔨_build
- 🚀_release
- 📦_package
- 🐳_docker
# - 🚚_deploy # uncomment when jobs to deploy docker images on recette / env will be available
# job automatique qui compile et lance les tests sur toutes les branches
🔨_build:
stage: 🔨_build
script:
# Build la partie front (les node_modules sont mis en cache pour pas tout retelecharger a chaque fois)
- cd webapp/ui
- npm install
- cd ../..
- sbt ";clean;compile;test"
cache:
paths:
- ./.m2/repository
key: m2
except:
refs:
- tags
- docker-ci-base-image
variables:
- $CI_COMMIT_MESSAGE =~ /ci-skip/ # do not run job if commit message contains "ci-skip"
# job manuel qui release une version sur la branche master
🚀_release:
stage: 🚀_release
script:
# On remplace le CI_JOB_TOKEN par un CI_CUSTOM_JOB_TOKEN qui possede le droit de push sur le repo (personal access token defini dans les gitlab secret variables)
- url_host=`git remote get-url origin | sed -e "s/https:\/\/gitlab-ci-token:.*@//g"`
- git remote set-url origin "https://gitlab-ci-token:${CI_CUSTOM_JOB_TOKEN}@${url_host}"
# Conf git pour pusher lors de la release
- git config --global user.email "[email protected]"
- git config --global user.name "Perspectives CI"
# gitlab CI bosse en mode detache sur un commit alors que la release a besoin de se faire sur une branche pour pusher les changements de versions dans gitlab
- git checkout $CI_COMMIT_REF_NAME
- git reset --hard origin/$CI_COMMIT_REF_NAME
# Build la partie front (les node_modules sont mis en cache pour pas tout retelecharger a chaque fois)
- cd webapp/ui
- npm install
- cd ../..
# Release
- sbt "release with-defaults"
cache:
paths:
- ./.m2/repository
key: m2
when: manual
except:
variables:
- $CI_COMMIT_MESSAGE =~ /ci-skip/ # do not run job if commit message contains "ci-skip"
only:
- master
# job automatique qui package l'application en zip apres chaque release sur le nouveau tag cree
📦_package:
stage: 📦_package
before_script:
# Build la partie front (les node_modules sont mis en cache pour pas tout retelecharger a chaque fois)
- cd webapp/ui
- npm install
- cd ../..
script:
- sbt dist
cache:
paths:
- ./.m2/repository
key: m2
artifacts:
paths:
- ./**/target/universal/*.zip
expire_in: 1 week
only:
- tags
- recette
# job qui permet de builder l'image docker de la webapp
🐳_build-docker-image-webapp:
extends: .build-docker-image
variables:
LOGBACK_RESOURCE: logback-production.xml
CONFIG_RESOURCE: application-production.conf
PROJECT: webapp
ENV_NAME_LOGBACK_RESOURCE: WEBAPP_LOGBACK_RESOURCE
ENV_NAME_CONFIG_RESOURCE: WEBAPP_CONFIG_RESOURCE
# job qui permet de builder l'image docker des batchs
🐳_build-docker-image-batchs:
extends: .build-docker-image
variables:
LOGBACK_RESOURCE: logback-production.xml
CONFIG_RESOURCE: application-production.conf
PROJECT: batchs
ENV_NAME_LOGBACK_RESOURCE: BATCHS_LOGBACK_RESOURCE
ENV_NAME_CONFIG_RESOURCE: BATCHS_CONFIG_RESOURCE
# job qui permet de builder l'image docker de la webapp pour la recette (SNAPSHOT)
🐳_build-r7-docker-image-webapp:
extends: .build-docker-image
variables:
LOGBACK_RESOURCE: logback-recette.xml
CONFIG_RESOURCE: application-recette.conf
PROJECT: webapp
ENV_NAME_LOGBACK_RESOURCE: WEBAPP_LOGBACK_RESOURCE
ENV_NAME_CONFIG_RESOURCE: WEBAPP_CONFIG_RESOURCE
only:
- recette
# job qui permet de builder l'image docker des batchs pour la recette (SNAPSHOT)
🐳_build-r7-docker-image-batchs:
extends: .build-docker-image
variables:
LOGBACK_RESOURCE: logback-recette.xml
CONFIG_RESOURCE: application-recette.conf
PROJECT: batchs
ENV_NAME_LOGBACK_RESOURCE: BATCHS_LOGBACK_RESOURCE
ENV_NAME_CONFIG_RESOURCE: BATCHS_CONFIG_RESOURCE
only:
- recette
# job manuel qui permet de builder l'image docker qui sert de base aux autres jobs Gitlab CI (pour pas reinstaller tous les outils a chaque job...)
🐳_build-ci-base-image:
stage: 🐳_docker
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
script:
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
- cat /kaniko/.docker/config.json
- cd docker
- /kaniko/executor --context $CI_PROJECT_DIR/docker --dockerfile $CI_PROJECT_DIR/docker/dockerfile-ci-base-image --destination $CI_REGISTRY_IMAGE/perspectives-ci-base-image:latest
only:
- docker-ci-base-image