-
Notifications
You must be signed in to change notification settings - Fork 2
/
.gitlab-ci.yml
98 lines (86 loc) · 2.17 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
image: ksfmedia/diskho:lts-21.7
variables:
DOCKER_DRIVER: overlay2
GIT_SUBMODULE_STRATEGY: recursive
CI_SCRIPTS: "${CI_PROJECT_DIR}/infra/ci-scripts"
YARN_CACHE: "${CI_PROJECT_DIR}/.yarn-cache"
.app-article-ci-variables: &app-article-ci-vars
SERVICE_NAME: app-article-server
LETTERA_INTERNAL: "http://lettera/v4"
before_script:
- eval `${CI_SCRIPTS}/prepare_stage_envvars.py ${CI_ENVIRONMENT_SLUG}`
stages:
- build
- docker
- deploy
# Build template
.build-app:
stage: build
environment: staging/$SERVICE_NAME
only:
- master
cache:
key: "affresco-yarn-cache"
paths:
- $YARN_CACHE
artifacts:
paths:
- artifacts/
when: always
expire_in: 7 days
script:
- $CI_SCRIPTS/affresco/app-build.sh
# Docker build template
.build-docker:
stage: docker
environment: staging/$SERVICE_NAME
only:
- master
script:
# docker build & push staging
- cd $CI_PROJECT_DIR/artifacts/staging/$SERVICE_NAME
- $CI_SCRIPTS/docker-build.sh
- $CI_SCRIPTS/auth-gcloud.sh
- $CI_SCRIPTS/docker-push.sh
# docker buld & push production
- eval `${CI_SCRIPTS}/prepare_stage_envvars.py production`
- cd $CI_PROJECT_DIR/artifacts/production/$SERVICE_NAME
- $CI_SCRIPTS/docker-build.sh
- $CI_SCRIPTS/auth-gcloud.sh
- $CI_SCRIPTS/docker-push.sh
# Deploy template
.deploy:
stage: deploy
environment: staging/$SERVICE_NAME
only:
- master
script:
- $CI_SCRIPTS/auth-gcloud.sh
- LETTERA_URL=$LETTERA_INTERNAL $CI_SCRIPTS/kubernetes-deployment.sh
- $CI_SCRIPTS/affresco/app-upload.sh
# Build apps
app-article-build:
extends: .build-app
variables: *app-article-ci-vars
# Build docker images
app-article-docker-build:
extends: .build-docker
needs:
- app-article-build
variables: *app-article-ci-vars
# Deploy Staging
deploy-app-article-staging:
extends: .deploy
needs:
- app-article-build
- app-article-docker-build
variables: *app-article-ci-vars
# Deploy production
deploy-app-article-production:
extends: .deploy
needs:
- app-article-build
- app-article-docker-build
environment: production/$SERVICE_NAME
when: manual
variables: *app-article-ci-vars