Newer
Older
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
stages:
- build
- publish
- deploy
- docs
- mirror
variables:
image_name: ubleipzig/deployer
docker_build:
stage: build
image: docker:latest
services:
- docker:dind
script: |
docker build --pull \
--build-arg HTTP_PROXY=${HTTP_PROXY} \
--build-arg HTTPS_PROXY=${HTTPS_PROXY} \
--build-arg NO_PROXY=${NO_PROXY} \
--build-arg http_proxy=${HTTP_PROXY} \
--build-arg https_proxy=${HTTPS_PROXY} \
--build-arg no_proxy=${NO_PROXY} \
-t image \
.
docker save --output=image.tar.gz image
artifacts:
name: docker-image
paths:
- image.tar.gz
tags:
- docker
docker_publish_production:
stage: publish
image: docker:latest
services:
- docker:dind
script: |
mkdir -p ~/.docker && echo "$DOCKER_AUTH_CONFIG" >~/.docker/config.json
version=`expr ${CI_COMMIT_TAG} ':' 'release/\(.\+\)'`
major_version=`expr ${version} ':' '\([^.]\+\)'`
minor_version=`expr ${version} ':' '[^.]\+\.\([^.]\+\)'`
patch_version=`expr ${version} ':' '[^.]\+\.[^.]\+\.\(.\+\)'`
docker load --input=image.tar.gz
docker tag image ${image_name}:${version}
docker push ${image_name}:${version}
for tag in "latest" "${major_version}" "${major_version}.${minor_version}"; do
docker tag ${image_name}:${version} ${image_name}:${tag}
docker push ${image_name}:${tag}
done
dependencies:
- docker_build
tags:
- docker
except:
- branches
only:
- /^release\/.*/
docker_publish_alpha:
stage: publish
image: docker:latest
services:
- docker:dind
script: |
test "${DOCKER_AUTH_CONFIG}" == "" && echo "docker-config does not exists, aborting!" && false
mkdir -p ~/.docker && echo "$DOCKER_AUTH_CONFIG" >~/.docker/config.json
docker load --input=image.tar.gz
docker tag image ${image_name}:alpha-${CI_COMMIT_REF_NAME}
docker push ${image_name}:alpha-${CI_COMMIT_REF_NAME}
dependencies:
- docker_build
tags:
- docker
only:
- /^[0-9]+-/
docker_publish_staging:
stage: publish
image: docker:latest
services:
- docker:dind
script: |
mkdir -p ~/.docker && echo "$DOCKER_AUTH_CONFIG" >~/.docker/config.json
docker load --input=image.tar.gz
docker tag image ${image_name}:staging
docker push ${image_name}:staging
dependencies:
- docker_build
tags:
- docker
only:
- master