-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
104 lines (95 loc) · 3.13 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
include:
- project: 'pedroetb-projects/gitlab-ci-templates'
ref: master
file: '/packaging-docker/_base.yml'
- project: 'pedroetb-projects/gitlab-ci-templates'
ref: master
file: '/packaging-docker/dockerfile-linting.yml'
- project: 'pedroetb-projects/gitlab-ci-templates'
ref: master
file: '/scanning/container-scanning.yml'
stages:
- pre-package
- package
- post-package
.docker-login-gitlab: &docker-login-gitlab |
env | grep "^CI_JOB_TOKEN=" | cut -d '=' -f 2- | docker login -u gitlab-ci-token --password-stdin ${CI_REGISTRY}
.docker-login-dockerhub: &docker-login-dockerhub |
env | grep "^DOCKER_HUB_PASS=" | cut -d '=' -f 2- | docker login -u ${DOCKER_HUB_USER} --password-stdin
.create-multiarch-builder: &create-multiarch-builder |
docker buildx create --driver docker-container --name multiarch-builder --use > /dev/null
.docker-operations:
extends: .dind-env
image: ${PACKAGING_IMAGE_NAME}:${PACKAGING_IMAGE_TAG}
variables:
PACKAGING_IMAGE_NAME: docker
PACKAGING_IMAGE_TAG: latest
PACKAGED_IMAGE_NAME: ${CI_REGISTRY_IMAGE}/${CI_COMMIT_REF_SLUG}
PACKAGED_IMAGE_TAG: ${CI_COMMIT_SHA}
LATEST_TAG_VALUE: latest
docker-build:
extends: .docker-operations
stage: package
variables:
COMPOSE_FILE_NAME: compose.yaml
COMPOSE_ENV_FILE_NAME: .env
COMPOSE_PROJECT_DIRECTORY: '.'
BUILDX_GIT_INFO: 'false'
script:
- *docker-login-gitlab
- *create-multiarch-builder
- >
VERSION=${CI_COMMIT_TAG:-${CI_COMMIT_SHORT_SHA}}
COMPOSE_FILE=${COMPOSE_PROJECT_DIRECTORY}/${COMPOSE_FILE_NAME}
IMAGE_NAME=${PACKAGED_IMAGE_NAME}
IMAGE_TAG=${PACKAGED_IMAGE_TAG}
docker compose
--env-file ${COMPOSE_PROJECT_DIRECTORY}/${COMPOSE_ENV_FILE_NAME}
build
-q
--pull
--push
${DOCKER_BUILD_ARGS};
- >
docker buildx imagetools create
--tag ${PACKAGED_IMAGE_NAME}:${LATEST_TAG_VALUE}
${PACKAGED_IMAGE_NAME}:${PACKAGED_IMAGE_TAG}
rules:
- if: $CI_MERGE_REQUEST_ID ||
$CI_PIPELINE_SOURCE == "schedule"
when: never
- if: $CI_COMMIT_BRANCH ||
$CI_COMMIT_TAG
.docker-tag:
extends: .docker-operations
stage: post-package
dependencies: []
rules:
- if: $CI_MERGE_REQUEST_ID ||
$CI_PIPELINE_SOURCE == "schedule" ||
$CI_COMMIT_BRANCH
when: never
- if: $CI_COMMIT_TAG
docker-tag-gitlab:
extends: .docker-tag
script:
- *docker-login-gitlab
- *create-multiarch-builder
- >
docker buildx imagetools create
--tag ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG}
--tag ${CI_REGISTRY_IMAGE}:${LATEST_TAG_VALUE}
${PACKAGED_IMAGE_NAME}:${PACKAGED_IMAGE_TAG}
docker-tag-dockerhub:
extends: .docker-tag
script:
- *docker-login-gitlab
- *docker-login-dockerhub
- *create-multiarch-builder
- dockerHubImagePath="$(echo ${CI_PROJECT_PATH} | cut -d '/' -f 2- | sed 's/\//-/g')"
- dockerHubImage="${DOCKER_HUB_ROOT}/${dockerHubImagePath}"
- >
docker buildx imagetools create
--tag ${dockerHubImage}:${CI_COMMIT_TAG}
--tag ${dockerHubImage}:${LATEST_TAG_VALUE}
${PACKAGED_IMAGE_NAME}:${PACKAGED_IMAGE_TAG}