13
13
GO_VERSION : 1.23.x
14
14
15
15
jobs :
16
+ build-deps :
17
+ runs-on : " ${{ matrix.runner }}"
18
+ timeout-minutes : 40
19
+ strategy :
20
+ fail-fast : false
21
+ matrix :
22
+ # ubuntu-20.04: cgroup v1, ubuntu-22.04 and later: cgroup v2
23
+ include :
24
+ - runner : ubuntu-24.04
25
+ containerd : v1.6.36
26
+ arch : amd64
27
+ - runner : ubuntu-24.04
28
+ containerd : v1.7.23
29
+ arch : amd64
30
+ - runner : ubuntu-24.04
31
+ containerd : v2.0.0-rc.5
32
+ arch : amd64
33
+ - runner : github-arm64-2c-8gb
34
+ containerd : v2.0.0-rc.5
35
+ arch : arm64
36
+ env :
37
+ CONTAINERD_VERSION : " ${{ matrix.containerd }}"
38
+ ARCH : " ${{ matrix.arch }}"
39
+ steps :
40
+
41
+ with :
42
+ fetch-depth : 1
43
+ - name : Expose GitHub Runtime variables for gha
44
+ uses : crazy-max/ghaction-github-runtime@v3
45
+ - name : Enable containerd to be able to use gha cache
46
+ run : |
47
+ sudo mkdir -p /etc/docker
48
+ echo '{"features": {"containerd-snapshotter": true}}' | sudo tee /etc/docker/daemon.json
49
+ sudo systemctl restart docker
50
+ - name : " Prepare integration test environment"
51
+ run : |
52
+ docker build \
53
+ --cache-to type=gha,mode=max,scope=${ARCH}-${CONTAINERD_VERSION} \
54
+ --cache-from type=gha,scope=${ARCH}-${CONTAINERD_VERSION} \
55
+ --target build-deps --build-arg CONTAINERD_VERSION=${CONTAINERD_VERSION} .
56
+
16
57
test-unit :
17
58
timeout-minutes : 5
18
59
name : unit | ${{ matrix.goos }}
51
92
run : go test -v ./pkg/...
52
93
53
94
test-integration :
95
+ needs : build-deps
54
96
runs-on : " ${{ matrix.runner }}"
55
97
timeout-minutes : 40
56
98
strategy :
@@ -61,24 +103,39 @@ jobs:
61
103
- ubuntu : 20.04
62
104
containerd : v1.6.36
63
105
runner : " ubuntu-20.04"
106
+ arch : amd64
64
107
- ubuntu : 22.04
65
108
containerd : v1.7.23
66
109
runner : " ubuntu-22.04"
110
+ arch : amd64
67
111
- ubuntu : 24.04
68
112
containerd : v2.0.0-rc.5
69
113
runner : " ubuntu-24.04"
114
+ arch : amd64
70
115
- ubuntu : 24.04
71
116
containerd : v2.0.0-rc.5
72
117
runner : github-arm64-2c-8gb
118
+ arch : arm64
73
119
env :
74
- UBUNTU_VERSION : " ${{ matrix.ubuntu }}"
75
120
CONTAINERD_VERSION : " ${{ matrix.containerd }}"
121
+ ARCH : " ${{ matrix.arch }}"
122
+ UBUNTU_VERSION : " ${{ matrix.ubuntu }}"
76
123
steps :
77
124
78
125
with :
79
126
fetch-depth : 1
127
+ - name : Expose GitHub Runtime variables for gha
128
+ uses : crazy-max/ghaction-github-runtime@v3
129
+ - name : Enable containerd to be able to use gha cache
130
+ run : |
131
+ sudo mkdir -p /etc/docker
132
+ echo '{"features": {"containerd-snapshotter": true}}' | sudo tee /etc/docker/daemon.json
133
+ sudo systemctl restart docker
80
134
- name : " Prepare integration test environment"
81
- run : docker build -t test-integration --target test-integration --build-arg UBUNTU_VERSION=${UBUNTU_VERSION} --build-arg CONTAINERD_VERSION=${CONTAINERD_VERSION} .
135
+ run : |
136
+ docker build \
137
+ --cache-from type=gha,scope=${ARCH}-${CONTAINERD_VERSION} \
138
+ -t test-integration --target test-integration --build-arg UBUNTU_VERSION=${UBUNTU_VERSION} --build-arg CONTAINERD_VERSION=${CONTAINERD_VERSION} .
82
139
- name : " Remove snap loopback devices (conflicts with our loopback devices in TestRunDevice)"
83
140
run : |
84
141
sudo systemctl disable --now snapd.service snapd.socket
@@ -103,6 +160,7 @@ jobs:
103
160
command : docker run -t --rm --privileged test-integration
104
161
105
162
test-integration-ipv6 :
163
+ needs : build-deps
106
164
runs-on : " ubuntu-${{ matrix.ubuntu }}"
107
165
timeout-minutes : 40
108
166
strategy :
@@ -112,9 +170,12 @@ jobs:
112
170
include :
113
171
- ubuntu : 24.04
114
172
containerd : v1.7.23
173
+ arch : amd64
115
174
env :
116
- UBUNTU_VERSION : " ${{ matrix.ubuntu }}"
117
175
CONTAINERD_VERSION : " ${{ matrix.containerd }}"
176
+ ARCH : " ${{ matrix.arch }}"
177
+ RUNNER : " ubuntu-${{ matrix.ubuntu }}"
178
+ UBUNTU_VERSION : " ${{ matrix.ubuntu }}"
118
179
steps :
119
180
120
181
with :
@@ -123,13 +184,19 @@ jobs:
123
184
run : |
124
185
sudo sysctl -w net.ipv6.conf.all.forwarding=1
125
186
sudo sysctl -w net.ipv4.ip_forward=1
126
- - name : Enable IPv6 for Docker
187
+
188
+ - name : Expose GitHub Runtime variables for gha
189
+ uses : crazy-max/ghaction-github-runtime@v3
190
+ - name : Enable IPv6 for Docker and configure docker for gha
127
191
run : |
128
192
sudo mkdir -p /etc/docker
129
- echo '{"ipv6": true, "fixed-cidr-v6": "2001:db8:1::/64", "experimental": true, "ip6tables": true}' | sudo tee /etc/docker/daemon.json
193
+ echo '{"features": {"containerd-snapshotter": true}, " ipv6": true, "fixed-cidr-v6": "2001:db8:1::/64", "experimental": true, "ip6tables": true}' | sudo tee /etc/docker/daemon.json
130
194
sudo systemctl restart docker
131
195
- name : " Prepare integration test environment"
132
- run : docker build -t test-integration-ipv6 --target test-integration-ipv6 --build-arg UBUNTU_VERSION=${UBUNTU_VERSION} --build-arg CONTAINERD_VERSION=${CONTAINERD_VERSION} .
196
+ run : |
197
+ docker build \
198
+ --cache-from type=gha,scope=${ARCH}-${CONTAINERD_VERSION} \
199
+ -t test-integration-ipv6 --target test-integration-ipv6 --build-arg UBUNTU_VERSION=${UBUNTU_VERSION} --build-arg CONTAINERD_VERSION=${CONTAINERD_VERSION} .
133
200
- name : " Remove snap loopback devices (conflicts with our loopback devices in TestRunDevice)"
134
201
run : |
135
202
sudo systemctl disable --now snapd.service snapd.socket
@@ -159,6 +226,7 @@ jobs:
159
226
command : docker run --network host -t --rm --privileged test-integration-ipv6
160
227
161
228
test-integration-rootless :
229
+ needs : build-deps
162
230
runs-on : " ubuntu-${{ matrix.ubuntu }}"
163
231
timeout-minutes : 60
164
232
strategy :
@@ -170,21 +238,27 @@ jobs:
170
238
containerd : v1.6.36
171
239
rootlesskit : v1.1.1 # Deprecated
172
240
target : test-integration-rootless
241
+ arch : amd64
173
242
- ubuntu : 22.04
174
243
containerd : v1.7.23
175
244
rootlesskit : v2.3.1
176
245
target : test-integration-rootless
246
+ arch : amd64
177
247
- ubuntu : 24.04
178
248
containerd : v2.0.0-rc.5
179
249
rootlesskit : v2.3.1
180
250
target : test-integration-rootless
251
+ arch : amd64
181
252
- ubuntu : 24.04
182
253
containerd : v1.7.23
183
254
rootlesskit : v2.3.1
184
255
target : test-integration-rootless-port-slirp4netns
256
+ arch : amd64
185
257
env :
186
- UBUNTU_VERSION : " ${{ matrix.ubuntu }}"
187
258
CONTAINERD_VERSION : " ${{ matrix.containerd }}"
259
+ ARCH : " ${{ matrix.arch }}"
260
+ RUNNER : " ubuntu-${{ matrix.ubuntu }}"
261
+ UBUNTU_VERSION : " ${{ matrix.ubuntu }}"
188
262
ROOTLESSKIT_VERSION : " ${{ matrix.rootlesskit }}"
189
263
TEST_TARGET : " ${{ matrix.target }}"
190
264
steps :
@@ -215,8 +289,18 @@ jobs:
215
289
docker run --privileged --rm tonistiigi/binfmt --install linux/amd64
216
290
docker run --privileged --rm tonistiigi/binfmt --install linux/arm64
217
291
docker run --privileged --rm tonistiigi/binfmt --install linux/arm/v7
292
+ - name : Expose GitHub Runtime variables for gha
293
+ uses : crazy-max/ghaction-github-runtime@v3
294
+ - name : Enable containerd to be able to use gha cache
295
+ run : |
296
+ sudo mkdir -p /etc/docker
297
+ echo '{"features": {"containerd-snapshotter": true}}' | sudo tee /etc/docker/daemon.json
298
+ sudo systemctl restart docker
218
299
- name : " Prepare (network driver=slirp4netns, port driver=builtin)"
219
- run : docker build -t ${TEST_TARGET} --target ${TEST_TARGET} --build-arg UBUNTU_VERSION=${UBUNTU_VERSION} --build-arg CONTAINERD_VERSION=${CONTAINERD_VERSION} --build-arg ROOTLESSKIT_VERSION=${ROOTLESSKIT_VERSION} .
300
+ run : |
301
+ docker build \
302
+ --cache-from type=gha,scope=${ARCH}-${CONTAINERD_VERSION} \
303
+ -t ${TEST_TARGET} --target ${TEST_TARGET} --build-arg UBUNTU_VERSION=${UBUNTU_VERSION} --build-arg CONTAINERD_VERSION=${CONTAINERD_VERSION} --build-arg ROOTLESSKIT_VERSION=${ROOTLESSKIT_VERSION} .
220
304
- name : " Disable BuildKit for RootlessKit v1 (workaround for issue #622)"
221
305
run : |
222
306
# https://github.com/containerd/nerdctl/issues/622
0 commit comments