-
Notifications
You must be signed in to change notification settings - Fork 11
/
.gitlab-ci.yml
116 lines (107 loc) · 4.39 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
# This specific template is located at:
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Docker.gitlab-ci.yml
# Build a Docker image with CI/CD and push to the GitLab registry.
# Docker-in-Docker documentation: https://docs.gitlab.com/ee/ci/docker/using_docker_build.html
# See also https://stackoverflow.com/questions/45517733/how-to-publish-docker-images-to-docker-hub-from-gitlab-ci
.build-template: &build-template
stage: build
image: docker:latest
services:
- docker:dind
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
changes:
- ${DOCKER_BUILD_CONTEXT}/${DOCKERFILE}
- .gitlab-ci.yml
before_script:
- echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY"
script:
- echo Building Image $CI_REGISTRY_IMAGE
- echo docker image build --pull --tag "${CI_REGISTRY_IMAGE}:${DEFAULT_TAG}" -f ${DOCKER_BUILD_CONTEXT}/${DOCKERFILE} ${DOCKER_BUILD_CONTEXT}
- docker image build --pull --tag "${CI_REGISTRY_IMAGE}:${DEFAULT_TAG}" -f ${DOCKER_BUILD_CONTEXT}/${DOCKERFILE} ${DOCKER_BUILD_CONTEXT}
- docker image tag "${CI_REGISTRY_IMAGE}:${DEFAULT_TAG}" "${CI_REGISTRY_IMAGE}:latest"
- docker image push --all-tags "$CI_REGISTRY_IMAGE"
docker-build-figlet:
variables:
CI_REGISTRY_IMAGE: '$CI_REGISTRY/dockerfornovices/figlet'
DEFAULT_TAG: "1.0"
DOCKER_BUILD_CONTEXT: "Figlet"
DOCKERFILE: "Dockerfile"
<<: *build-template
docker-build-api-server:
variables:
CI_REGISTRY_IMAGE: '$CI_REGISTRY/dockerfornovices/api-server'
GO_VERSION: "1.14"
DEFAULT_TAG: ${GO_VERSION}
BUILD_ARGS: '--build-arg GO_VERSION=$GO_VERSION'
DOCKERFILE: "Dockerfile"
DOCKER_BUILD_CONTEXT: FileSetA
<<: *build-template
docker-build-sqlite:
variables:
CI_REGISTRY_IMAGE: '$CI_REGISTRY/dockerfornovices/sqlite'
DEFAULT_TAG: "0.1"
DOCKERFILE: "sqlite3.dockerfile"
DOCKER_BUILD_CONTEXT: FileSetC
<<: *build-template
docker-build-lua-dev:
variables:
CI_REGISTRY_IMAGE: '$CI_REGISTRY/dockerfornovices/luadev'
DEFAULT_TAG: "0.1"
DOCKERFILE: "lua.dockerfile"
DOCKER_BUILD_CONTEXT: FileSetD
<<: *build-template
docker-build-counter:
variables:
CI_REGISTRY_IMAGE: '$CI_REGISTRY/dockerfornovices/counter'
DEFAULT_TAG: "0.1"
stage: build
image: docker:latest
services:
- docker:dind
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
changes:
- .gitlab-ci.yml
before_script:
- echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY"
script:
- echo Building Image $CI_REGISTRY_IMAGE
- |
docker image build --pull --tag "${CI_REGISTRY_IMAGE}:${DEFAULT_TAG}" - <<EOF
FROM alpine:latest
CMD ["/bin/sh", "-c", "trap exit SIGTERM; while echo \$(( i += 1));do sleep 5;done"]
LABEL org.opencontainers.image.source="$CI_PROJECT_URL"
LABEL org.opencontainers.image.created="$CI_JOB_STARTED_AT"
LABEL org.opencontainers.image.licenses="MIT"
LABEL org.opencontainers.image.description="A demo image that shows how to count"
EOF
- docker image tag "${CI_REGISTRY_IMAGE}:${DEFAULT_TAG}" "${CI_REGISTRY_IMAGE}:latest"
- docker image push --all-tags "$CI_REGISTRY_IMAGE"
docker-build-fizzbuzz:
variables:
CI_REGISTRY_IMAGE: '$CI_REGISTRY/dockerfornovices/fizzbuzz'
DEFAULT_TAG: "0.1"
stage: build
image: docker:latest
services:
- docker:dind
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
changes:
- .gitlab-ci.yml
before_script:
- echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY"
script:
- echo Building Image $CI_REGISTRY_IMAGE
- |
docker image build --pull --tag "${CI_REGISTRY_IMAGE}:${DEFAULT_TAG}" - <<EOF
FROM alpine:latest
CMD ["/bin/sh", "-c", "trap exit SIGTERM; while [ $(( i += 1 )) ]; do echo -n \"$i: \";([ $((i%15)) -eq 0 ] && echo FizzBuzz) || ([ $((i%3)) -eq 0 ] && echo Fizz ) || ([ $((i%5)) -eq 0 ] && echo Buzz ) || echo $i;sleep 1;done"]
LABEL org.opencontainers.image.source="$CI_PROJECT_URL"
LABEL org.opencontainers.image.created="$CI_JOB_STARTED_AT"
LABEL org.opencontainers.image.licenses="MIT"
LABEL org.opencontainers.image.description="A demo image that plays Fizz Buzz"
EOF
- docker image tag "${CI_REGISTRY_IMAGE}:${DEFAULT_TAG}" "${CI_REGISTRY_IMAGE}:latest"
- docker image push --all-tags "$CI_REGISTRY_IMAGE"