-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path.gitlab-ci.yml
159 lines (140 loc) · 5.2 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
154
155
156
image: docker:latest
stages:
- docs
- build
- deploy
services:
- docker:dind
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
CI_REGISTRY_IMAGE: ebispot/eqtl-sumstats-api
CI_REGISTRY_DOCS_IMAGE: ebispot/eqtl-sumstats-docs
# generate the docs with sphinx
sphinxdocs:
image: $CI_REGISTRY_IMAGE:dev
stage: docs
script:
- mkdir logs
- make clean
- make html
artifacts:
expire_in: '2 hrs'
paths:
- docs/build/html
only:
- master
- dev
# always build an image tagged with the commit SHA from master
build:
stage: build
script:
- echo "$DOCKER_HUB_PASSWORD" > dhpw.txt
- docker login -u "${DOCKER_HUB_USER}" --password-stdin < dhpw.txt docker.io
- docker pull $CI_REGISTRY_IMAGE:latest
- docker build --cache-from $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
only:
- master
build_dev:
stage: build
script:
- echo "$DOCKER_HUB_PASSWORD" > dhpw.txt
- docker login -u "${DOCKER_HUB_USER}" --password-stdin < dhpw.txt docker.io
- docker pull $CI_REGISTRY_IMAGE:latest
- docker build --cache-from $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
- docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:dev
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
- docker push $CI_REGISTRY_IMAGE:dev
only:
- dev
build_docs:
stage: build
script:
- echo "$DOCKER_HUB_PASSWORD" > dhpw.txt
- docker login -u "${DOCKER_HUB_USER}" --password-stdin < dhpw.txt docker.io
- docker pull $CI_REGISTRY_DOCS_IMAGE:latest
- docker build -f nginx/Dockerfile --cache-from $CI_REGISTRY_DOCS_IMAGE:latest -t $CI_REGISTRY_DOCS_IMAGE:$CI_COMMIT_SHA .
- docker push $CI_REGISTRY_DOCS_IMAGE:$CI_COMMIT_SHA
dependencies:
- sphinxdocs
only:
- master
- dev
# if a tag is created create an images with the tag and a latest
build_release:
stage: build
variables:
GIT_STRATEGY: none
script:
- echo "$DOCKER_HUB_PASSWORD" > dhpw.txt
- docker login -u "${DOCKER_HUB_USER}" --password-stdin < dhpw.txt
- docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
- docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:latest
- docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
- docker push $CI_REGISTRY_IMAGE:latest
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
only:
- tags
build_docs_release:
stage: build
variables:
GIT_STRATEGY: none
script:
- echo "$DOCKER_HUB_PASSWORD" > dhpw.txt
- docker login -u "${DOCKER_HUB_USER}" --password-stdin < dhpw.txt
- docker pull $CI_REGISTRY_DOCS_IMAGE:$CI_COMMIT_SHA
- docker tag $CI_REGISTRY_DOCS_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_DOCS_IMAGE:latest
- docker tag $CI_REGISTRY_DOCS_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_DOCS_IMAGE:$CI_COMMIT_TAG
- docker push $CI_REGISTRY_DOCS_IMAGE:latest
- docker push $CI_REGISTRY_DOCS_IMAGE:$CI_COMMIT_TAG
dependencies:
- sphinxdocs
only:
- tags
deploy_staging:
image: dtzar/helm-kubectl:2.13.1
stage: deploy
script:
- echo "Deploy to staging server"
- mkdir -p /root/.kube
- echo ${FALLBACK_KUBECONF} | base64 -d > /root/.kube/config
- helm init --stable-repo-url https://charts.helm.sh/stable
- helm delete --purge eqtl-sumstats-dev || true
- helm install --name eqtl-sumstats-dev --set k8Namespace=dev-gwas,service.name=eqtl-rest-api-dev,staticService.name=eqtl-api-docs-dev,staticService.path=/api-docs,image.repository=$CI_REGISTRY_IMAGE,image.tag=$CI_COMMIT_SHA,image.uid=$UID,image.gid=$GID,staticService.image.repository=$CI_REGISTRY_DOCS_IMAGE,staticService.image.tag=$CI_COMMIT_SHA,volume.data.nfsServer=$NFS_SERVER,volume.data.path=$NFS_PATH_DEV,replicaCount=1 ./eqtlss/ --wait
environment:
name: dev
when: manual
only:
- master
- dev
deploy_fallback:
image: dtzar/helm-kubectl:2.13.1
stage: deploy
script:
- echo "Deploy to fallback server"
- mkdir -p /root/.kube
- echo ${FALLBACK_KUBECONF} | base64 -d > /root/.kube/config
- helm init --stable-repo-url https://charts.helm.sh/stable
- helm delete --purge eqtl-sumstats || true
- helm install --name eqtl-sumstats --set k8Namespace=eqtl,image.repository=$CI_REGISTRY_IMAGE,image.tag=$CI_COMMIT_SHA,image.uid=$UID,image.gid=$GID,staticService.image.repository=$CI_REGISTRY_DOCS_IMAGE,staticService.image.tag=$CI_COMMIT_SHA,volume.data.nfsServer=$NFS_SERVER,volume.data.path=$NFS_PATH ./eqtlss/ --wait
environment:
name: fallback
when: manual
only:
- tags
deploy_prod:
image: dtzar/helm-kubectl:2.13.1
stage: deploy
script:
- echo "Deploy to production server"
- mkdir -p /root/.kube
- echo ${PROD_KUBECONF} | base64 -d > /root/.kube/config
- helm init --stable-repo-url https://charts.helm.sh/stable
- helm delete --purge eqtl-sumstats || true
- helm install --name eqtl-sumstats --set k8Namespace=eqtl,image.repository=$CI_REGISTRY_IMAGE,image.tag=$CI_COMMIT_SHA,image.uid=$UID,image.gid=$GID,staticService.image.repository=$CI_REGISTRY_DOCS_IMAGE,staticService.image.tag=$CI_COMMIT_SHA,volume.data.nfsServer=$NFS_SERVER_PROD,volume.data.path=$NFS_PATH_PROD ./eqtlss/ --wait
environment:
name: production
when: manual
only:
- tags