@@ -2,7 +2,13 @@ image: ubuntu:16.04
22
33stages :
44 - test
5- - docker_build
5+ - build-image
6+
7+ workflow :
8+ rules :
9+ - if : $CI_MERGE_REQUEST_ID
10+ when : never
11+ - when : always
612
713variables :
814 POSTGRES_DB : dbname # set database
@@ -194,44 +200,67 @@ test-check-cli:
194200 exit 1
195201 fi
196202
197-
198- Docker build master :
199- image : docker:stable
200- stage : docker_build
201- when : on_success
202- variables :
203- DOCKER_DRIVER : overlay2
204- DOCKER_HOST : tcp://docker:2375
205- only :
206- - master
207- - docker_build
208- - docker_run_checkup_with_upload
203+ .job_template : &build_image_definition
204+ image : docker:19
205+ stage : build-image
206+ artifacts :
207+ paths :
208+ - bin
209209 services :
210210 - docker:dind
211- before_script :
212- - docker login -u gitlab-ci-token -p "${CI_BUILD_TOKEN}" registry.gitlab.com
213211 script :
214- - docker build -t registry.gitlab.com/postgres-ai/postgres-checkup:latest --no-cache=true .
215- - docker push registry.gitlab.com/postgres-ai/postgres-checkup:latest
216- after_script :
217- - docker logout registry.gitlab.com
218-
219- Docker build for tag :
220- image : docker:stable
221- stage : docker_build
222- when : on_success
212+ - apk update && apk upgrade && apk add --no-cache bash # TODO(anatoly): Remove dependency.
213+ - bash ./.ci/docker_build_push.sh
214+
215+ .only_var_template : &only_tag_release
216+ rules :
217+ - if : $CI_COMMIT_TAG =~ /^[0-9.]+$/
218+
219+ .only_var_template : &only_tag_rc
220+ rules :
221+ - if : $CI_COMMIT_TAG =~ /^[0-9.]+[\-_]*[a-zA-Z]+[a-zA-Z0-9.\-_]*[a-zA-Z0-9]+$/
222+
223+ .only_var_template : &only_master
224+ rules :
225+ - if : $CI_COMMIT_BRANCH == "master"
226+
227+ .only_var_template : &only_feature
228+ rules :
229+ - if : $CI_COMMIT_REF_SLUG != "master" # $CI_COMMIT_REF_SLUG &&
230+
231+ build-image-feature-server :
232+ << : *build_image_definition
233+ << : *only_feature
223234 variables :
224- DOCKER_DRIVER : overlay2
225- DOCKER_HOST : tcp://docker:2375
226- only :
227- variables :
228- - $CI_COMMIT_TAG != null
229- services :
230- - docker:dind
231- before_script :
232- - docker login -u gitlab-ci-token -p "${CI_BUILD_TOKEN}" registry.gitlab.com
233- script :
234- - docker build -t registry.gitlab.com/postgres-ai/postgres-checkup:$CI_COMMIT_TAG --no-cache=true .
235- - docker push registry.gitlab.com/postgres-ai/postgres-checkup:$CI_COMMIT_TAG
236- after_script :
237- - docker logout registry.gitlab.com
235+ REGISTRY_USER : " ${CI_REGISTRY_USER}"
236+ REGISTRY_PASSWORD : " ${CI_REGISTRY_PASSWORD}"
237+ REGISTRY : " ${CI_REGISTRY}"
238+ DOCKER_NAME : " registry.gitlab.com/postgres-ai/postgres-checkup"
239+ TAGS : " ${DOCKER_NAME}:${CI_COMMIT_REF_SLUG}"
240+
241+ build-image-master-server :
242+ << : *build_image_definition
243+ << : *only_master
244+ variables :
245+ DOCKER_NAME : " registry.gitlab.com/postgres-ai/postgres-checkup"
246+ TAGS : " ${DOCKER_NAME}:master,${DOCKER_NAME}:master-${CI_COMMIT_SHORT_SHA}"
247+
248+ build-image-latest-server :
249+ << : *build_image_definition
250+ << : *only_tag_release
251+ variables :
252+ REGISTRY_USER : " ${DH_CI_REGISTRY_USER}"
253+ REGISTRY_PASSWORD : " ${DH_CI_REGISTRY_PASSWORD}"
254+ REGISTRY : " ${DH_CI_REGISTRY}"
255+ DOCKER_NAME : " postgresai/postgres-checkup"
256+ TAGS : " ${DOCKER_NAME}:latest,${DOCKER_NAME}:${CI_COMMIT_TAG}"
257+
258+ build-image-rc-server :
259+ << : *build_image_definition
260+ << : *only_tag_rc
261+ variables :
262+ REGISTRY_USER : " ${DH_CI_REGISTRY_USER}"
263+ REGISTRY_PASSWORD : " ${DH_CI_REGISTRY_PASSWORD}"
264+ REGISTRY : " ${DH_CI_REGISTRY}"
265+ DOCKER_NAME : " postgresai/postgres-checkup"
266+ TAGS : " ${DOCKER_NAME}:${CI_COMMIT_TAG}"
0 commit comments