-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
131 lines (120 loc) · 5.11 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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
stages:
- build
- publish
.ct-ng_version: &ct-ng_version
CT_NG_VERSION: 1.24.0
.build-container: &build-container
image: docker:latest
stage: build
services:
- docker:dind
variables:
TARGET: UNKNOWN
DOCKERFILE: UNKNOWN
FOLDER: UNKNOWN
DOCKER_ARGS: ""
script:
- docker login -u gitlab-ci-token -p ${CI_BUILD_TOKEN} ${CI_REGISTRY}
- echo "Building target '$TARGET' image to $CI_REGISTRY_IMAGE/$TARGET"
- cd "${FOLDER}"
- '[[ "${USE_CACHE}" == "yes" ]] && sh -c "docker pull $CI_REGISTRY_IMAGE/${TARGET} || echo No upstream image to cache from, will have to build a new one from scratch" || echo "Building new one from scratch"'
- export DOCKER_OPTS="--force-rm=true --compress=true"
- '[[ "${USE_CACHE}" == "yes" ]] && export DOCKER_OPTS="${DOCKER_OPTS} --cache-from $CI_REGISTRY_IMAGE/${TARGET}" || export DOCKER_OPTS="${DOCKER_OPTS} --no-cache=true"'
- echo "Executing 'docker build ${DOCKER_OPTS} ${DOCKER_ARGS} -t ${TARGET} -f ${DOCKERFILE} .'"
- DEBIAN_FRONTEND=noninteractive docker build ${DOCKER_OPTS} ${DOCKER_ARGS} -t ${TARGET} -f ${DOCKERFILE} .
- docker tag ${TARGET} ${CI_REGISTRY_IMAGE}/${TARGET}
- docker push ${CI_REGISTRY_IMAGE}/${TARGET}
.docker:upload: &docker_upload
stage: publish
image: docker:latest
dependencies: []
services:
- docker:dind
variables:
SOURCE_IMAGE: "???"
TARGET_IMAGE: "???"
script:
- docker login -u gitlab-ci-token -p "${CI_BUILD_TOKEN}" "${CI_REGISTRY}"
- docker pull "${SOURCE_IMAGE}"
- docker tag "${SOURCE_IMAGE}" "${TARGET_IMAGE}"
- export CI_REGISTRY_USER=bverhagen
- export CI_REGISTRY_PASSWORD=${DOCKER_HUB_TOKEN}
- rm -f ~/.docker/config.json
- docker login -u bverhagen -p "${DOCKER_HUB_TOKEN}" docker.io
- docker push "${TARGET_IMAGE}"
ubuntu-18.04:build:
<<: *build-container
variables:
<<: *ct-ng_version
TARGET: crosstool-ng-ubuntu-18.04:${CT_NG_VERSION}
DOCKERFILE: Dockerfile
FOLDER: debian-based
DOCKER_ARGS: "--build-arg SYSTEM=ubuntu --build-arg VERSION=18.04 --build-arg CROSSTOOL_NG_VERSION=crosstool-ng-${CT_NG_VERSION}"
ubuntu-19.10:build:
<<: *build-container
variables:
<<: *ct-ng_version
TARGET: crosstool-ng-ubuntu-19.10:${CT_NG_VERSION}
DOCKERFILE: Dockerfile
FOLDER: debian-based
DOCKER_ARGS: "--build-arg SYSTEM=ubuntu --build-arg VERSION=19.10 --build-arg CROSSTOOL_NG_VERSION=crosstool-ng-${CT_NG_VERSION}"
debian-buster:build:
<<: *build-container
variables:
<<: *ct-ng_version
TARGET: crosstool-ng-debian-buster:${CT_NG_VERSION}
DOCKERFILE: Dockerfile
FOLDER: debian-based
DOCKER_ARGS: "--build-arg SYSTEM=debian --build-arg VERSION=buster --build-arg CROSSTOOL_NG_VERSION=crosstool-ng-${CT_NG_VERSION}"
debian-testing:build:
<<: *build-container
variables:
<<: *ct-ng_version
TARGET: crosstool-ng-debian-testing:${CT_NG_VERSION}
DOCKERFILE: Dockerfile
FOLDER: debian-based
DOCKER_ARGS: "--build-arg SYSTEM=debian --build-arg VERSION=testing --build-arg CROSSTOOL_NG_VERSION=crosstool-ng-${CT_NG_VERSION}"
ubuntu-18.04:
<<: *docker_upload
variables:
<<: *ct-ng_version
SOURCE_IMAGE: ${CI_REGISTRY_IMAGE}/crosstool-ng-${CI_JOB_NAME}:${CT_NG_VERSION}
TARGET_IMAGE: bverhagen/crosstool-ng:${CI_JOB_NAME}_${CT_NG_VERSION}
after_script:
- docker tag "${SOURCE_IMAGE}" "bverhagen/crosstool-ng:${CI_JOB_NAME}_latest"
- docker push "bverhagen/crosstool-ng:${CI_JOB_NAME}_latest"
only:
- master
ubuntu-19.10:
<<: *docker_upload
variables:
<<: *ct-ng_version
SOURCE_IMAGE: ${CI_REGISTRY_IMAGE}/crosstool-ng-${CI_JOB_NAME}:${CT_NG_VERSION}
TARGET_IMAGE: bverhagen/crosstool-ng:${CI_JOB_NAME}_${CT_NG_VERSION}
after_script:
- docker tag "${SOURCE_IMAGE}" "bverhagen/crosstool-ng:${CI_JOB_NAME}_latest"
- docker push "bverhagen/crosstool-ng:${CI_JOB_NAME}_latest"
only:
- master
debian-buster:
<<: *docker_upload
variables:
<<: *ct-ng_version
SOURCE_IMAGE: ${CI_REGISTRY_IMAGE}/crosstool-ng-${CI_JOB_NAME}:${CT_NG_VERSION}
TARGET_IMAGE: bverhagen/crosstool-ng:${CI_JOB_NAME}_${CT_NG_VERSION}
after_script:
- docker tag "${SOURCE_IMAGE}" "bverhagen/crosstool-ng:${CI_JOB_NAME}_latest"
- docker push "bverhagen/crosstool-ng:${CI_JOB_NAME}_latest"
only:
- master
debian-testing:
<<: *docker_upload
variables:
<<: *ct-ng_version
SOURCE_IMAGE: ${CI_REGISTRY_IMAGE}/crosstool-ng-${CI_JOB_NAME}:${CT_NG_VERSION}
TARGET_IMAGE: bverhagen/crosstool-ng:${CI_JOB_NAME}_${CT_NG_VERSION}
after_script:
- docker tag "${SOURCE_IMAGE}" "bverhagen/crosstool-ng:${CI_JOB_NAME}_latest"
- docker push "bverhagen/crosstool-ng:${CI_JOB_NAME}_latest"
only:
- master