Skip to content
This repository was archived by the owner on Jul 6, 2021. It is now read-only.

Commit 1c722a6

Browse files
committed
Merge branch 'docker-hub' into 'master'
feat: improved docker images storage See merge request postgres-ai/postgres-checkup!445
2 parents 42c71c3 + f20a36f commit 1c722a6

File tree

2 files changed

+102
-38
lines changed

2 files changed

+102
-38
lines changed

.ci/docker_build_push.sh

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#!/bin/bash
2+
3+
set -euo pipefail
4+
5+
docker_file=${DOCKER_FILE:-"Dockerfile"}
6+
tags=${TAGS:-""}
7+
8+
registry_user=${REGISTRY_USER:-"${CI_REGISTRY_USER}"}
9+
registry_password=${REGISTRY_PASSWORD:-"${CI_REGISTRY_PASSWORD}"}
10+
registry=${REGISTRY:-"${CI_REGISTRY}"}
11+
12+
docker login --username $registry_user --password "${registry_password}" $registry
13+
14+
tags_build=""
15+
tags_push=""
16+
17+
IFS=',' read -ra ADDR string <<EOF
18+
$tags
19+
EOF
20+
21+
for tag in "${ADDR[@]}"; do
22+
tags_build="${tags_build} --tag ${tag}"
23+
tags_push="${tags_push}${tag}\n"
24+
done
25+
26+
set -x
27+
docker build $tags_build --file $docker_file .
28+
set +x
29+
30+
echo -e "$tags_push" | while read -r tag; do
31+
[ -z "$tag" ] && continue
32+
set -x
33+
docker push $tag
34+
set +x
35+
done

.gitlab-ci.yml

+67-38
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,13 @@ image: ubuntu:16.04
22

33
stages:
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

713
variables:
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

Comments
 (0)