Skip to content
This repository was archived by the owner on Feb 26, 2023. It is now read-only.

Commit 258a766

Browse files
committed
feat: Add basic GitLab CI/CD configuration for dhcdd and dhcpctl
1 parent c75b6ed commit 258a766

File tree

1 file changed

+219
-0
lines changed

1 file changed

+219
-0
lines changed

.gitlab-ci.yml

Lines changed: 219 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,219 @@
1+
.dibsJob: &dibsJob
2+
image: docker:stable
3+
services:
4+
- name: docker:dind
5+
command:
6+
- "--experimental"
7+
variables:
8+
DOCKER_HOST: tcp://docker:2375/
9+
before_script:
10+
# Install curl and tar
11+
- apk add -u curl tar
12+
# Install qemu-user-static
13+
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
14+
# Install buildx
15+
- curl -Lo /tmp/docker-buildx https://github.com/docker/buildx/releases/download/v0.3.1/buildx-v0.3.1.linux-amd64
16+
- mkdir -p ~/.docker/cli-plugins/
17+
- install /tmp/docker-buildx ~/.docker/cli-plugins
18+
- docker buildx create --name dibs
19+
- docker buildx use dibs
20+
- docker buildx inspect --bootstrap
21+
# Install Helm
22+
- curl -L https://get.helm.sh/helm-v3.1.1-linux-amd64.tar.gz | tar -zvxf - linux-amd64/helm -O >/tmp/helm
23+
- install /tmp/helm /usr/local/bin
24+
# Install ghr
25+
- curl -L https://github.com/tcnksm/ghr/releases/download/v0.13.0/ghr_v0.13.0_linux_amd64.tar.gz | tar -zvxf - ghr_v0.13.0_linux_amd64/ghr
26+
- install ghr_v0.13.0_linux_amd64/ghr /usr/local/bin
27+
# Install Chart Releaser
28+
- curl -L https://github.com/helm/chart-releaser/releases/download/v0.2.3/chart-releaser_0.2.3_linux_amd64.tar.gz | tar -zvxf - cr
29+
- install cr /usr/local/bin
30+
# Install dibs
31+
- curl -Lo /tmp/dibs https://github.com/pojntfx/dibs/releases/latest/download/dibs-linux-amd64
32+
- install /tmp/dibs /usr/local/bin
33+
# Login to Docker Hub
34+
- docker login ${DOCKER_REGISTRY} --username ${DOCKER_USERNAME} --password ${DOCKER_PASSWORD}
35+
36+
stages:
37+
- dhcpdd:unitTest
38+
- dhcpdctl:unitTest
39+
- dhcpdd:integrationTest
40+
- dhcpdctl:integrationTest
41+
- dhcpdd:buildAndPushImage
42+
- dhcpdd:buildAndPushManifestAndBinaries
43+
- dhcpdctl:buildAndPushBinaries
44+
- dhcpdd:buildAndPushChart
45+
46+
# Unit tests
47+
dhcpdd:unitTestAMD64:
48+
<<: *dibsJob
49+
stage: dhcpdd:unitTest
50+
script:
51+
- dibs -unitTests -target linux -platform linux/amd64 -docker
52+
dhcpdd:unitTestARM64:
53+
<<: *dibsJob
54+
stage: dhcpdd:unitTest
55+
script:
56+
- dibs -unitTests -target linux -platform linux/arm64 -docker
57+
58+
dhcpdctl:unitTestAMD64:
59+
<<: *dibsJob
60+
stage: dhcpdctl:unitTest
61+
script:
62+
- dibs -unitTests -target dhcpdctl-linux -platform linux/amd64 -docker
63+
dhcpdctl:unitTestARM64:
64+
<<: *dibsJob
65+
stage: dhcpdctl:unitTest
66+
script:
67+
- dibs -unitTests -target dhcpdctl-linux -platform linux/arm64 -docker
68+
69+
# Integration tests
70+
dhcpdd:integrationTestAMD64:
71+
<<: *dibsJob
72+
stage: dhcpdd:integrationTest
73+
script:
74+
- dibs -integrationTests -target linux -platform linux/amd64 -docker
75+
dhcpdd:integrationTestARM64:
76+
<<: *dibsJob
77+
stage: dhcpdd:integrationTest
78+
script:
79+
- dibs -integrationTests -target linux -platform linux/arm64 -docker
80+
81+
dhcpdctl:integrationTestAMD64:
82+
<<: *dibsJob
83+
stage: dhcpdctl:integrationTest
84+
script:
85+
- dibs -integrationTests -target dhcpdctl-linux -platform linux/amd64 -docker
86+
dhcpdctl:integrationTestARM64:
87+
<<: *dibsJob
88+
stage: dhcpdctl:integrationTest
89+
script:
90+
- dibs -integrationTests -target dhcpdctl-linux -platform linux/arm64 -docker
91+
92+
# Image tests
93+
# amd64 is disabled for now due to a GitLab bug where it does not exit after being run
94+
#dhcpdd:imageTestsAMD64:
95+
# <<: *dibsJob
96+
# stage: dhcpdd:integrationTest
97+
# script:
98+
# - dibs -buildImage -target linux -platform linux/amd64
99+
# - dibs -imageTests -target linux -platform linux/amd64
100+
dhcpdd:imageTestsARM64:
101+
<<: *dibsJob
102+
stage: dhcpdd:integrationTest
103+
script:
104+
- dibs -buildImage -target linux -platform linux/arm64
105+
- dibs -imageTests -target linux -platform linux/arm64
106+
107+
# Chart tests
108+
dhcpdd:chartTestsAMD64:
109+
<<: *dibsJob
110+
stage: dhcpdd:integrationTest
111+
script:
112+
- dibs -buildImage -target linux -platform linux/amd64
113+
- dibs -buildManifest -target linux
114+
- dibs -chartTests -target linux -platform linux/amd64 -docker
115+
dhcpdd:chartTestsARM64:
116+
<<: *dibsJob
117+
stage: dhcpdd:integrationTest
118+
script:
119+
- dibs -buildImage -target linux -platform linux/arm64
120+
- dibs -buildManifest -target linux
121+
- dibs -chartTests -target linux -platform linux/arm64 -docker
122+
123+
# Build and push image
124+
dhcpdd:buildAndPushImageAMD64:
125+
<<: *dibsJob
126+
stage: dhcpdd:buildAndPushImage
127+
script:
128+
- dibs -buildImage -target linux -platform linux/amd64
129+
- dibs -pushImage -target linux -platform linux/amd64
130+
only:
131+
- tags
132+
dhcpdd:buildAndPushImageARM64:
133+
<<: *dibsJob
134+
stage: dhcpdd:buildAndPushImage
135+
script:
136+
- dibs -buildImage -target linux -platform linux/arm64
137+
- dibs -pushImage -target linux -platform linux/arm64
138+
only:
139+
- tags
140+
141+
# Build and push manifest
142+
dhcpdd:buildAndPushManifest:
143+
<<: *dibsJob
144+
stage: dhcpdd:buildAndPushManifestAndBinaries
145+
script:
146+
- dibs -buildManifest -target linux
147+
- dibs -pushManifest -target linux
148+
only:
149+
- tags
150+
151+
# Build and push binaries
152+
dhcpdd:buildAndPushBinariesAMD64:
153+
<<: *dibsJob
154+
stage: dhcpdd:buildAndPushManifestAndBinaries
155+
script:
156+
- dibs -build -target linux -platform linux/amd64 -docker
157+
- dibs -pushBinary -target linux -platform linux/amd64
158+
artifacts:
159+
name: dhcpdd-binaries-amd64
160+
paths:
161+
- .bin/binaries
162+
expire_in: 1 month
163+
only:
164+
- tags
165+
dhcpdd:buildAndPushBinariesARM64:
166+
<<: *dibsJob
167+
stage: dhcpdd:buildAndPushManifestAndBinaries
168+
script:
169+
- dibs -build -target linux -platform linux/arm64 -docker
170+
- dibs -pushBinary -target linux -platform linux/arm64
171+
artifacts:
172+
name: dhcpdd-binaries-arm64
173+
paths:
174+
- .bin/binaries
175+
expire_in: 1 month
176+
only:
177+
- tags
178+
179+
dhcpdctl:buildAndPushBinariesAMD64:
180+
<<: *dibsJob
181+
stage: dhcpdctl:buildAndPushBinaries
182+
script:
183+
- dibs -build -target dhcpdctl-linux -platform linux/amd64 -docker
184+
- dibs -pushBinary -target dhcpdctl-linux -platform linux/amd64
185+
artifacts:
186+
name: dhcpdctl-binaries-amd64
187+
paths:
188+
- .bin/binaries
189+
expire_in: 1 month
190+
only:
191+
- tags
192+
dhcpdctl:buildAndPushBinariesARM64:
193+
<<: *dibsJob
194+
stage: dhcpdctl:buildAndPushBinaries
195+
script:
196+
- dibs -build -target dhcpdctl-linux -platform linux/arm64 -docker
197+
- dibs -pushBinary -target dhcpdctl-linux -platform linux/arm64
198+
artifacts:
199+
name: dhcpdctl-binaries-arm64
200+
paths:
201+
- .bin/binaries
202+
expire_in: 1 month
203+
only:
204+
- tags
205+
206+
# Build and push chart
207+
dhcpdd:buildAndPushChart:
208+
<<: *dibsJob
209+
stage: dhcpdd:buildAndPushChart
210+
script:
211+
- dibs -buildChart -target linux
212+
- dibs -pushChart -target linux
213+
artifacts:
214+
name: dhcpdd-chart
215+
paths:
216+
- .bin/chart
217+
expire_in: 1 month
218+
only:
219+
- tags

0 commit comments

Comments
 (0)