Skip to content

Commit 1f85f18

Browse files
fix: Dockerfile usage comments
feat: add Dockerfile.swagger-ui, rename Dockerfile.dblab-server feat: 0.2 release changelog Swagger API description fixed docs: add references URLs feat: add dblab client Docker container wip: gitlab ci improvements feat: update CI chore: debug chore: debug chore: debug chore: debug fix fix try try try try try try try try try try try try try try try try try try try try try try feat: improved CI fix: remove debug fix: typo
1 parent 8f9c744 commit 1f85f18

6 files changed

+151
-46
lines changed

.gitlab-ci.yml

+85-36
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
11
image: golang:1.13
22

3-
cache:
4-
paths:
5-
# TODO(anatoly): Fix go mod cache.
6-
- /apt-cache
7-
- /go/pkg/mod
8-
93
stages:
104
- test
115
- build-binary
@@ -47,53 +41,108 @@ build-binary-generic:
4741
script:
4842
- make build-generic
4943

50-
build-image-tags:
51-
only:
52-
refs:
53-
- tags
44+
.job_template: &build_image_definition
5445
image: docker:19
5546
stage: build-image
5647
artifacts:
5748
paths:
5849
- bin
5950
services:
6051
- docker:dind
61-
variables:
62-
DOCKER_NAME: postgresai/dblab-server
6352
script:
64-
- cp ./bin/dblab-server-alpine ./bin/dblab-server
65-
- cp ./bin/dblab-alpine ./bin/dblab
66-
67-
- TAG_LATEST="${DOCKER_NAME}:latest"
68-
- TAG_VERSION="${DOCKER_NAME}:${CI_COMMIT_TAG}"
53+
- apk update && apk upgrade && apk add --no-cache bash # TODO(anatoly): Remove dependency.
54+
- bash ./scripts/ci_docker_build_push.sh
6955

70-
- docker login --username $DH_CI_REGISTRY_USER --password "${DH_CI_REGISTRY_PASSWORD}" $DH_CI_REGISTRY
71-
- docker build --tag $TAG_VERSION --tag $TAG_LATEST .
56+
.only_var_template: &only_tag_release
57+
only:
58+
variables:
59+
- $CI_COMMIT_TAG =~ /^[0-9.]+$/
7260

73-
- docker push $TAG_VERSION
74-
- docker push $TAG_LATEST
61+
.only_var_template: &only_tag_rc
62+
only:
63+
variables:
64+
- $CI_COMMIT_TAG =~ /^[0-9.]+[\-_]*[a-zA-Z]+[a-zA-Z0-9.\-_]*[a-zA-Z0-9]+$/
7565

76-
build-image-master:
66+
.only_var_template: &only_master
7767
only:
7868
- master
79-
image: docker:19
80-
stage: build-image
81-
artifacts:
82-
paths:
83-
- bin
84-
services:
85-
- docker:dind
69+
70+
build-image-master-server:
71+
<<: *build_image_definition
72+
<<: *only_master
8673
variables:
74+
DOCKER_FILE: "Dockerfile.dblab-server"
8775
DOCKER_NAME: "registry.gitlab.com/postgres-ai/database-lab/dblab-server"
88-
script:
76+
TAGS: "${DOCKER_NAME}:master,${DOCKER_NAME}:master-${CI_COMMIT_SHORT_SHA}"
77+
before_script:
78+
- cp ./bin/dblab-server-alpine ./bin/dblab-server
79+
80+
build-image-master-client:
81+
<<: *build_image_definition
82+
<<: *only_master
83+
variables:
84+
DOCKER_FILE: "Dockerfile.dblab"
85+
DOCKER_NAME: "registry.gitlab.com/postgres-ai/database-lab/dblab"
86+
TAGS: "${DOCKER_NAME}:master,${DOCKER_NAME}:master-${CI_COMMIT_SHORT_SHA}"
87+
before_script:
88+
- cp ./bin/dblab-alpine ./bin/dblab
89+
90+
build-image-latest-server:
91+
<<: *build_image_definition
92+
<<: *only_tag_release
93+
variables:
94+
REGISTRY_USER: "${DH_CI_REGISTRY_USER}"
95+
REGISTRY_PASSWORD: "${DH_CI_REGISTRY_PASSWORD}"
96+
REGISTRY: "${DH_CI_REGISTRY}"
97+
DOCKER_FILE: "Dockerfile.dblab-server"
98+
DOCKER_NAME: "postgresai/dblab-server"
99+
TAGS: "${DOCKER_NAME}:latest,${DOCKER_NAME}:${CI_COMMIT_TAG}"
100+
before_script:
89101
- cp ./bin/dblab-server-alpine ./bin/dblab-server
102+
103+
build-image-latest-client:
104+
<<: *build_image_definition
105+
<<: *only_tag_release
106+
variables:
107+
REGISTRY_USER: "${DH_CI_REGISTRY_USER}"
108+
REGISTRY_PASSWORD: "${DH_CI_REGISTRY_PASSWORD}"
109+
REGISTRY: "${DH_CI_REGISTRY}"
110+
DOCKER_FILE: "Dockerfile.dblab"
111+
DOCKER_NAME: "postgresai/dblab"
112+
TAGS: "${DOCKER_NAME}:latest,${DOCKER_NAME}:${CI_COMMIT_TAG}"
113+
before_script:
90114
- cp ./bin/dblab-alpine ./bin/dblab
91115

92-
- TAG_MASTER_LATEST="${DOCKER_NAME}:master"
93-
- TAG_MASTER_VERSION="${DOCKER_NAME}:master-${CI_COMMIT_SHORT_SHA}"
116+
build-image-rc-server:
117+
<<: *build_image_definition
118+
<<: *only_tag_rc
119+
variables:
120+
REGISTRY_USER: "${DH_CI_REGISTRY_USER}"
121+
REGISTRY_PASSWORD: "${DH_CI_REGISTRY_PASSWORD}"
122+
REGISTRY: "${DH_CI_REGISTRY}"
123+
DOCKER_FILE: "Dockerfile.dblab-server"
124+
DOCKER_NAME: "postgresai/dblab-server"
125+
TAGS: "${DOCKER_NAME}:${CI_COMMIT_TAG}"
126+
before_script:
127+
- cp ./bin/dblab-server-alpine ./bin/dblab-server
94128

95-
- docker login --username $CI_REGISTRY_USER --password "${CI_REGISTRY_PASSWORD}" $CI_REGISTRY
96-
- docker build --tag $TAG_MASTER_VERSION --tag $TAG_MASTER_LATEST .
129+
build-image-rc-client:
130+
<<: *build_image_definition
131+
<<: *only_tag_rc
132+
variables:
133+
REGISTRY_USER: "${DH_CI_REGISTRY_USER}"
134+
REGISTRY_PASSWORD: "${DH_CI_REGISTRY_PASSWORD}"
135+
REGISTRY: "${DH_CI_REGISTRY}"
136+
DOCKER_FILE: "Dockerfile.dblab"
137+
DOCKER_NAME: "postgresai/dblab"
138+
TAGS: "${DOCKER_NAME}:${CI_COMMIT_TAG}"
139+
before_script:
140+
- cp ./bin/dblab-alpine ./bin/dblab
97141

98-
- docker push $TAG_MASTER_LATEST
99-
- docker push $TAG_MASTER_VERSION
142+
build-image-swagger-latest:
143+
<<: *build_image_definition
144+
<<: *only_tag_release
145+
variables:
146+
DOCKER_FILE: "Dockerfile.swagger-ui"
147+
DOCKER_NAME: "registry.gitlab.com/postgres-ai/database-lab/dblab-swagger-ui"
148+
TAGS: "${DOCKER_NAME}:latest"

Dockerfile.dblab

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
FROM docker:19
2+
3+
# Install dependecies.
4+
RUN apk update && apk add --no-cache bash jq
5+
6+
WORKDIR /home/dblab
7+
COPY ./bin/dblab ./bin/dblab
8+
CMD ./bin/dblab

Dockerfile renamed to Dockerfile.dblab-server

+20-10
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,38 @@
11
# Run with config.yml mount:
2-
# sudo docker run --privileged --name dblab_server --detach \
3-
# --label dblab-control \
2+
# sudo docker run \
3+
# --name dblab_server \
4+
# --label dblab_control \
5+
# --privileged \
6+
# --publish 3000:3000 \
7+
# --restart on-failure \
48
# --volume /var/run/docker.sock:/var/run/docker.sock \
59
# --volume /var/lib/dblab:/var/lib/dblab:rshared \
6-
# --volume /home/user/configs/config.yml:/home/dblab/configs/config.yml \
7-
# --publish 3000:3000 \
8-
# dblab-server
10+
# --volume ~/.dblab/configs/config.yml:/home/dblab/configs/config.yml \
11+
# --env VERIFICATION_TOKEN=secret_token \
12+
# --detach \
13+
# postgresai/dblab-server:latest
914
#
1015
# or run with envs options:
11-
# sudo docker run --privileged --name dblab_server --detach \
12-
# --label dblab-control \
16+
# sudo docker run \
17+
# --name dblab_server \
18+
# --label dblab_control \
19+
# --privileged \
20+
# --publish 3000:3000 \
21+
# --restart on-failure \
1322
# --volume /var/run/docker.sock:/var/run/docker.sock \
1423
# --volume /var/lib/dblab:/var/lib/dblab:rshared \
24+
# --volume ~/.dblab/configs/config.yml:/home/dblab/configs/config.yml \
1525
# --env VERIFICATION_TOKEN=token \
1626
# --env MOUNT_DIR=/var/lib/dblab/clones \
1727
# --env UNIX_SOCKET_DIR=/var/lib/dblab/sockets \
1828
# --env DOCKER_IMAGE=postgres:12-alpine \
19-
# --publish 3000:3000 \
20-
# dblab-server
29+
# --detach \
30+
# postgresai/dblab-server:latest
2131

2232
FROM docker:19
2333

2434
# Install dependecies.
25-
RUN apk update && apk add zfs bash
35+
RUN apk update && apk add --no-cache zfs bash
2636

2737
WORKDIR /home/dblab
2838

Dockerfile.swagger-ui

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
FROM nginx:1.17-alpine
2+
COPY ./api/swagger-spec/ /usr/share/nginx/html/api/swagger-spec/
3+
COPY ./web /usr/share/nginx/html

scripts/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
File renamed without changes.

0 commit comments

Comments
 (0)