Skip to content

Commit d477b44

Browse files
committed
Merge branch 'migration-tools-images' into 'master'
Build Docker images for the most popular DB migration tools in order to run migrations with DLMC See database-lab#240 See merge request postgres-ai/custom-images!30
2 parents c812c85 + d6e340e commit d477b44

File tree

8 files changed

+196
-0
lines changed

8 files changed

+196
-0
lines changed

.gitlab-ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ stages:
33

44
include:
55
- local: '/extended-postgres/build-images-ci.yml'
6+
- local: '/migration-tools/build-images-migration-tools.yml'
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
stages:
2+
- build-image
3+
4+
.job_template: &build_image_definition_dh
5+
image: docker:19
6+
stage: build-image
7+
services:
8+
- alias: docker
9+
name: docker:19.03.5-dind
10+
script:
11+
- apk add --no-cache bash
12+
- bash ./ci_docker_build_push.sh
13+
variables: &extended_image_vars_dh
14+
REGISTRY_USER: "${DH_CI_REGISTRY_USER}"
15+
REGISTRY_PASSWORD: "${DH_CI_REGISTRY_PASSWORD}"
16+
REGISTRY: "${DH_CI_REGISTRY}"
17+
DOCKER_NAME: "postgresai/migration-tools"
18+
19+
.job_template: &build_image_definition_gl
20+
image: docker:19
21+
stage: build-image
22+
services:
23+
- alias: docker
24+
name: docker:19.03.5-dind
25+
script:
26+
- apk add --no-cache bash
27+
- bash ./ci_docker_build_push.sh
28+
variables: &extended_image_vars_gl
29+
REGISTRY_USER: "${CI_REGISTRY_USER}"
30+
REGISTRY_PASSWORD: "${CI_REGISTRY_PASSWORD}"
31+
REGISTRY: "${CI_REGISTRY}"
32+
DOCKER_NAME: "registry.gitlab.com/postgres-ai/custom-images/migration-tools"
33+
34+
.only_var_template: &only_tag_release
35+
only:
36+
variables:
37+
- $CI_COMMIT_TAG =~ /^[0-9.]+$/
38+
changes:
39+
- migration-tools/*
40+
41+
.only_var_template: &only_feature
42+
only:
43+
refs:
44+
- branches
45+
variables:
46+
- $CI_COMMIT_REF_SLUG != "master"
47+
changes:
48+
- migration-tools/*
49+
when: manual
50+
51+
build-sqitch-image-latest:
52+
<<: *build_image_definition_dh
53+
<<: *only_tag_release
54+
variables:
55+
<<: *extended_image_vars_dh
56+
TOOL_NAME: "sqitch"
57+
DOCKER_FILE: "migration-tools/sqitch.Dockerfile"
58+
TAGS: "${DOCKER_NAME}:${TOOL_NAME},${DOCKER_NAME}:${TOOL_NAME}-${CI_COMMIT_TAG}"
59+
60+
build-flyway-image-latest:
61+
<<: *build_image_definition_dh
62+
<<: *only_tag_release
63+
variables:
64+
<<: *extended_image_vars_dh
65+
TOOL_NAME: "flyway"
66+
DOCKER_FILE: "migration-tools/flyway.Dockerfile"
67+
TAGS: "${DOCKER_NAME}:${TOOL_NAME},${DOCKER_NAME}:${TOOL_NAME}-${CI_COMMIT_TAG}"
68+
69+
build-liquibase-image-latest:
70+
<<: *build_image_definition_dh
71+
<<: *only_tag_release
72+
variables:
73+
<<: *extended_image_vars_dh
74+
TOOL_NAME: "liquibase"
75+
DOCKER_FILE: "migration-tools/liquibase.Dockerfile"
76+
TAGS: "${DOCKER_NAME}:${TOOL_NAME},${DOCKER_NAME}:${TOOL_NAME}-${CI_COMMIT_TAG}"
77+
78+
build-rake-image-latest:
79+
<<: *build_image_definition_dh
80+
<<: *only_tag_release
81+
variables:
82+
<<: *extended_image_vars_dh
83+
TOOL_NAME: "rake"
84+
DOCKER_FILE: "migration-tools/rake.Dockerfile"
85+
TAGS: "${DOCKER_NAME}:${TOOL_NAME},${DOCKER_NAME}:${TOOL_NAME}-${CI_COMMIT_TAG}"
86+
87+
build-django-image-latest:
88+
<<: *build_image_definition_dh
89+
<<: *only_tag_release
90+
variables:
91+
<<: *extended_image_vars_dh
92+
TOOL_NAME: "django"
93+
DOCKER_FILE: "migration-tools/django.Dockerfile"
94+
TAGS: "${DOCKER_NAME}:${TOOL_NAME},${DOCKER_NAME}:${TOOL_NAME}-${CI_COMMIT_TAG}"
95+
96+
build-sqitch-image-feature:
97+
<<: *build_image_definition_gl
98+
<<: *only_feature
99+
variables:
100+
<<: *extended_image_vars_gl
101+
TOOL_NAME: "sqitch"
102+
DOCKER_FILE: "migration-tools/sqitch.Dockerfile"
103+
TAGS: "${DOCKER_NAME}:${TOOL_NAME},${DOCKER_NAME}:${TOOL_NAME}-${CI_COMMIT_REF_SLUG}"
104+
105+
106+
build-flyway-image-feature:
107+
<<: *build_image_definition_gl
108+
<<: *only_feature
109+
variables:
110+
<<: *extended_image_vars_gl
111+
TOOL_NAME: "flyway"
112+
DOCKER_FILE: "migration-tools/flyway.Dockerfile"
113+
TAGS: "${DOCKER_NAME}:${TOOL_NAME},${DOCKER_NAME}:${TOOL_NAME}-${CI_COMMIT_REF_SLUG}"
114+
115+
build-liquibase-image-feature:
116+
<<: *build_image_definition_gl
117+
<<: *only_feature
118+
variables:
119+
<<: *extended_image_vars_gl
120+
TOOL_NAME: "liquibase"
121+
DOCKER_FILE: "migration-tools/liquibase.Dockerfile"
122+
TAGS: "${DOCKER_NAME}:${TOOL_NAME},${DOCKER_NAME}:${TOOL_NAME}-${CI_COMMIT_REF_SLUG}"
123+
124+
build-rake-image-feature:
125+
<<: *build_image_definition_gl
126+
<<: *only_feature
127+
variables:
128+
<<: *extended_image_vars_gl
129+
TOOL_NAME: "rake"
130+
DOCKER_FILE: "migration-tools/rake.Dockerfile"
131+
TAGS: "${DOCKER_NAME}:${TOOL_NAME},${DOCKER_NAME}:${TOOL_NAME}-${CI_COMMIT_REF_SLUG}"
132+
133+
build-django-image-feature:
134+
<<: *build_image_definition_gl
135+
<<: *only_feature
136+
variables:
137+
<<: *extended_image_vars_gl
138+
TOOL_NAME: "django"
139+
DOCKER_FILE: "migration-tools/django.Dockerfile"
140+
TAGS: "${DOCKER_NAME}:${TOOL_NAME},${DOCKER_NAME}:${TOOL_NAME}-${CI_COMMIT_REF_SLUG}"

migration-tools/django.Dockerfile

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
FROM python:3.9.4-alpine3.13
2+
3+
RUN apk add --no-cache bash && pip install django
4+
5+
ENV PATH="/home/django/.local/bin":$PATH
6+
ENV USER=django
7+
8+
RUN addgroup -S $USER && adduser -S $USER -G $USER
9+
10+
USER $USER
11+
12+
COPY ./migration-tools/entrypoint.sh /entrypoint.sh
13+
14+
ENTRYPOINT ["/bin/bash"]
15+
CMD ["/entrypoint.sh"]

migration-tools/entrypoint.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/usr/bin/env bash
2+
set -e
3+
4+
/bin/bash -c "trap : TERM INT; sleep infinity & wait"

migration-tools/flyway.Dockerfile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
FROM flyway/flyway:7.7.3
2+
3+
ENTRYPOINT ["/bin/bash"]
4+
5+
COPY --chown=$USER ./migration-tools/entrypoint.sh /entrypoint.sh
6+
7+
CMD ["/entrypoint.sh"]

migration-tools/liquibase.Dockerfile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
FROM liquibase/liquibase:4.3.3
2+
3+
ENTRYPOINT ["/bin/bash"]
4+
5+
COPY --chown=$USER ./migration-tools/entrypoint.sh /entrypoint.sh
6+
7+
CMD ["/entrypoint.sh"]
8+

migration-tools/rake.Dockerfile

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
FROM ruby:3.0.1-alpine3.13
2+
3+
RUN apk add --no-cache bash
4+
5+
COPY ./migration-tools/entrypoint.sh /entrypoint.sh
6+
7+
ENV USER=rake
8+
9+
RUN addgroup -S $USER && adduser -S $USER -G $USER
10+
11+
USER $USER
12+
13+
ENTRYPOINT ["/bin/bash"]
14+
CMD ["/entrypoint.sh"]

migration-tools/sqitch.Dockerfile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
FROM sqitch/sqitch:1.0.0
2+
3+
ENTRYPOINT ["/bin/bash"]
4+
5+
COPY --chown=$USER ./migration-tools/entrypoint.sh /entrypoint.sh
6+
7+
CMD ["/entrypoint.sh"]

0 commit comments

Comments
 (0)