-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
134 lines (119 loc) · 4.35 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
132
133
134
include:
- file: /Scan/trivy.yml
project: jitesoft/gitlab-ci-lib
stages:
- version
- base
- extra
- scan
variables:
DOCKER_VERSION: 19.03.9
CE_VERSION: 18.06.3-ce
ARCHITECTURES: "linux/amd64,linux/arm64"
CE_ARCHITECTURES: "linux/amd64,linux/arm64,linux/arm/v7,linux/ppc64le,linux/s390x"
image: registry.gitlab.com/jitesoft/dockerfiles/misc:latest
# TODO: Rewrite this!
download:version:
stage: version
image: registry.gitlab.com/jitesoft/dockerfiles/misc:latest
script:
- VERSION="$(wget -qO- https://api.github.com/repos/docker/cli/tags | jq -r '.[0].name' | awk 'NR==1{print $1}')"
- echo ${VERSION#?} > version.txt
artifacts:
paths:
- version.txt
expire_in: 1 hour
build:docker:
needs:
- download:version
stage: base
script:
- DOCKER_VERSION=$(cat version.txt)
- docker buildx build --platform ${ARCHITECTURES} --progress plain --build-arg DOCKER_VERSION=${DOCKER_VERSION} --push -t ghcr.io/jitesoft/docker:${DOCKER_VERSION} -t ghcr.io/jitesoft/docker:latest -t ${CI_REGISTRY_IMAGE}:${DOCKER_VERSION} -t ${CI_REGISTRY_IMAGE}:latest -t jitesoft/docker:latest -t jitesoft/docker:${DOCKER_VERSION} .
tags: [ jitesoft, buildx, protected ]
only:
refs:
- master
build:docker:ce:
stage: base
script:
- docker buildx build --platform ${CE_ARCHITECTURES} --progress plain --build-arg DOCKER_VERSION=${CE_VERSION} --push -t ghcr.io/jitesoft/docker:${CE_VERSION} -t ghcr.io/jitesoft/docker:ce -t ${CI_REGISTRY_IMAGE}:${CE_VERSION} -t ${CI_REGISTRY_IMAGE}:ce -t jitesoft/docker:ce -t jitesoft/docker:${CE_VERSION} .
tags: [ jitesoft, buildx, protected ]
only:
refs:
- master
build:dind:
needs:
- download:version
- build:docker
stage: extra
script:
- DOCKER_VERSION=$(cat version.txt)
- cd Dind
- docker buildx build --platform linux/amd64,linux/arm64 --progress plain --build-arg DOCKER_VERSION=${DOCKER_VERSION} --push -t ghcr.io/jitesoft/docker:${DOCKER_VERSION}-dind -t ghcr.io/jitesoft/docker:dind -t ${CI_REGISTRY_IMAGE}/dind:${DOCKER_VERSION} -t ${CI_REGISTRY_IMAGE}/dind:latest -t jitesoft/docker:latest-dind -t jitesoft/docker:${DOCKER_VERSION}-dind .
tags: [ jitesoft, buildx, protected ]
only:
refs:
- master
build:dind:ce:
needs:
- build:docker:ce
stage: extra
script:
- cd Dind
- docker buildx build --platform linux/amd64,linux/arm64,linux/ppc64le,linux/s390x --progress plain --build-arg DOCKER_VERSION=${CE_VERSION} --push -t ghcr.io/jitesoft/docker:${CE_VERSION}-dind -t ghcr.io/jitesoft/docker:ce-dind -t ${CI_REGISTRY_IMAGE}/dind:${CE_VERSION} -t ${CI_REGISTRY_IMAGE}/dind:ce -t jitesoft/docker:${CE_VERSION}-dind -t jitesoft/docker:ce-dind .
tags: [ jitesoft, buildx, protected ]
only:
refs:
- master
build:buildx:
needs:
- build:docker
- download:version
stage: extra
before_script:
- apk add --no-cache wget grep
- BUILDX_VERSION=$(wget -qO- https://api.github.com/repos/docker/buildx/releases | jq -r '.[0].name' | awk 'NR==1{print $1}' | sed -r 's/v//g')
script:
- DOCKER_VERSION=$(cat version.txt)
- cd BuildX
- docker buildx build --platform ${ARCHITECTURES} --progress plain --build-arg BUILDX_VERSION=${BUILDX_VERSION} --build-arg DOCKER_VERSION=${DOCKER_VERSION} --push -t ghcr.io/jitesoft/docker:${DOCKER_VERSION}-buildx -t ghcr.io/jitesoft/docker:buildx -t ${CI_REGISTRY_IMAGE}/buildx:${DOCKER_VERSION} -t ${CI_REGISTRY_IMAGE}/buildx:latest -t jitesoft/docker:${DOCKER_VERSION}-buildx -t jitesoft/docker:latest-buildx .
tags: [ jitesoft, buildx, protected ]
only:
refs:
- master
scan:
needs:
- build:docker
extends: .container_scanning
variables:
SCANNING_IMAGE_NAME: "${CI_REGISTRY_IMAGE}:latest"
GIT_STRATEGY: none
scan:dind:
needs:
- build:dind
extends: .container_scanning
variables:
SCANNING_IMAGE_NAME: "${CI_REGISTRY_IMAGE}/dind:latest"
GIT_STRATEGY: none
scan:ce:
needs:
- build:docker
extends: .container_scanning
variables:
SCANNING_IMAGE_NAME: "${CI_REGISTRY_IMAGE}:ce"
GIT_STRATEGY: none
scan:dind:ce:
needs:
- build:dind:ce
extends: .container_scanning
variables:
SCANNING_IMAGE_NAME: "${CI_REGISTRY_IMAGE}/dind:ce"
GIT_STRATEGY: none
scan:buildx:
needs:
- build:buildx
extends: .container_scanning
variables:
SCANNING_IMAGE_NAME: "${CI_REGISTRY_IMAGE}/buildx:latest"
GIT_STRATEGY: none