@@ -25,7 +25,18 @@ linuxkit_pkg_build: &linuxkit_pkg_build
25
25
mkdir /workspace/packages
26
26
linuxkit pkg build pkg/$PKG
27
27
linuxkit pkg show-tag pkg/$PKG > /workspace/packages/$PKG.tag
28
- docker save -o /workspace/packages/$PKG.tar $(cat /workspace/packages/$PKG.tag)
28
+ echo
29
+ docker image ls --all
30
+ # If image already existed on hub then it would be pulled
31
+ # rather than built above and in that case we do not have
32
+ # the -ARCH version locally.
33
+ #if ! docker image inspect $(cat /workspace/packages/$PKG.tag)-amd64 2>/dev/null ; then
34
+ # docker image save -o /workspace/packages/$PKG.tar $(cat /workspace/packages/$PKG.tag)
35
+ #else
36
+ # docker image save -o /workspace/packages/$PKG.tar $(cat /workspace/packages/$PKG.tag){,-amd64}
37
+ #fi
38
+ # Include all tags, e.g. hash and hash-ARCH if both are present
39
+ docker image save -o /workspace/packages/$PKG.tar linuxkit/$PKG
29
40
- persist_to_workspace :
30
41
root : /workspace
31
42
paths : packages
@@ -58,11 +69,72 @@ image_cache_build: &image_cache_build
58
69
mkdir /workspace/packages
59
70
make --no-print-directory -C pkg/image-cache build-$CACHE
60
71
make --no-print-directory -C pkg/image-cache show-tag-$CACHE > /workspace/packages/$PKG.tag
61
- docker save -o /workspace/packages/$PKG.tar $(cat /workspace/packages/$PKG.tag)
72
+ echo
73
+ docker image ls --all
74
+ #if ! docker image inspect $(cat /workspace/packages/$PKG.tag)-amd64 2>/dev/null ; then
75
+ # docker image save -o /workspace/packages/$PKG.tar $(cat /workspace/packages/$PKG.tag)
76
+ #else
77
+ # docker image save -o /workspace/packages/$PKG.tar $(cat /workspace/packages/$PKG.tag){,-amd64}
78
+ #fi
79
+ # Include all tags, e.g. hash and hash-ARCH if both are present
80
+ docker image save -o /workspace/packages/$PKG.tar linuxkit/$PKG
62
81
- persist_to_workspace :
63
82
root : /workspace
64
83
paths : packages
65
84
85
+ image_build : &image_build
86
+ docker :
87
+ - image : debian:stretch
88
+ steps :
89
+ - run :
90
+ name : Configure $PATH
91
+ command : echo 'export PATH=/workspace/bin:$PATH' >> $BASH_ENV
92
+ - run :
93
+ name : Install packages
94
+ # ca-certificates are needed for attach_workspace (and git over https)
95
+ command : apt-get update && apt-get install -y ca-certificates curl git make openssh-client
96
+ - attach_workspace :
97
+ at : /workspace
98
+ - checkout
99
+ - setup_remote_docker :
100
+ version : 17.06.1-ce
101
+ - run :
102
+ name : Importing packages from workspace
103
+ command : |
104
+ docker image load --input /workspace/packages/kubelet.tar
105
+ case "$KUBE_RUNTIME" in
106
+ docker)
107
+ docker image load --input /workspace/packages/kubernetes-docker-image-cache-common.tar
108
+ docker image load --input /workspace/packages/kubernetes-docker-image-cache-control-plane.tar
109
+ ;;
110
+ cri-containerd)
111
+ docker image load --input /workspace/packages/cri-containerd.tar
112
+ ;;
113
+ *)
114
+ echo "Unknown $KUBE_RUNTIME"
115
+ exit 1
116
+ ;;
117
+ esac
118
+ echo
119
+ docker image ls --all
120
+ - run :
121
+ name : Build images
122
+ command : |
123
+ mkdir -p /workspace/images/kube-$KUBE_RUNTIME-$KUBE_NETWORK
124
+ df -h .
125
+ # KUBE_FORMATS="iso-efi iso-bios" times out or fails for larger docker images.
126
+ # Just do tar for now.
127
+ make KUBE_FORMATS="tar" kube-master.iso kube-node.iso
128
+ du -shc *.tar
129
+ #du -shc *.iso
130
+ #mv kube-master*.iso kube-node*.iso /workspace/images/kube-$KUBE_RUNTIME-$KUBE_NETWORK
131
+ # - store_artifacts:
132
+ # path: /workspace/images
133
+ # destination: images
134
+ # - persist_to_workspace:
135
+ # root: /workspace
136
+ # paths: images
137
+
66
138
version : 2
67
139
jobs :
68
140
dependencies :
@@ -80,7 +152,10 @@ jobs:
80
152
command : |
81
153
curl -fsSL -o /tmp/docker.tgz https://download.docker.com/linux/static/stable/x86_64/docker-17.06.2-ce.tgz
82
154
tar xfO /tmp/docker.tgz docker/docker > /workspace/bin/docker
83
- curl -fsSL -o /workspace/bin/linuxkit https://188-46932243-gh.circle-artifacts.com/0/linuxkit-linux-amd64
155
+ # TEMP: From https://github.com/linuxkit/linuxkit/pull/2772 for `linuxkit pkg push --nobuild` support
156
+ curl -fsSL -o /workspace/bin/linuxkit https://203-46932243-gh.circle-artifacts.com/0/linuxkit-linux-amd64
157
+ curl -fsSL -o /workspace/bin/notary https://github.com/theupdateframework/notary/releases/download/v0.4.3/notary-Linux-amd64
158
+ curl -fsSL -o /workspace/bin/manifest-tool https://github.com/estesp/manifest-tool/releases/download/v0.7.0/manifest-tool-linux-amd64
84
159
85
160
echo "Downloaded:"
86
161
sha256sum /workspace/bin/*
@@ -89,13 +164,17 @@ jobs:
89
164
echo "Checking checksums"
90
165
sha256sum -c <<EOF
91
166
6af40e74b2dbb2927882acab52d50bfc72551779d541957fc70b6adc325ee5ef /workspace/bin/docker
92
- 841425e37f713fcb19cb84a60e42df8a6e09066616eee0f4a00ee87bab7cb6dc /workspace/bin/linuxkit
167
+ 23c7e2d909e0055df4b51fdda8fa63d72a1803347d08e8d3fe8dd37c13c0ba03 /workspace/bin/linuxkit
168
+ e4ca2ef0015a4be8597d31d9e3e70d88da33924ae72b0999e9f3b79304d4710d /workspace/bin/manifest-tool
169
+ 06cd02c4c2e7a3b1ad9899b03b3d4dde5392d964c675247d32f604a24661f839 /workspace/bin/notary
93
170
EOF
94
171
- run :
95
172
name : Versions
96
173
command : |
97
174
chmod +x /workspace/bin/docker # docker version deferred until daemon configured in relevant jobs
98
175
chmod +x /workspace/bin/linuxkit && /workspace/bin/linuxkit version
176
+ chmod +x /workspace/bin/manifest-tool && /workspace/bin/manifest-tool --version
177
+ chmod +x /workspace/bin/notary && /workspace/bin/notary version
99
178
- persist_to_workspace :
100
179
root : /workspace
101
180
paths : bin
@@ -134,7 +213,46 @@ jobs:
134
213
pkg-image-cache-control-plane :
135
214
<< : *image_cache_build
136
215
137
- pkgs :
216
+ image-docker-weave :
217
+ << : *image_build
218
+ environment :
219
+ - KUBE_RUNTIME : docker
220
+ - KUBE_NETWORK : weave
221
+ image-docker-bridge :
222
+ << : *image_build
223
+ environment :
224
+ - KUBE_RUNTIME : docker
225
+ - KUBE_NETWORK : bridge
226
+
227
+ image-cri-containerd-weave :
228
+ << : *image_build
229
+ environment :
230
+ - KUBE_RUNTIME : cri-containerd
231
+ - KUBE_NETWORK : weave
232
+ image-cri-containerd-bridge :
233
+ << : *image_build
234
+ environment :
235
+ - KUBE_RUNTIME : cri-containerd
236
+ - KUBE_NETWORK : bridge
237
+
238
+ # images:
239
+ # docker:
240
+ # - image: debian:stretch
241
+ # steps:
242
+ # - run:
243
+ # name: Configure $PATH
244
+ # command: echo 'export PATH=/workspace/bin:$PATH' >> $BASH_ENV
245
+ # - run:
246
+ # name: Install packages
247
+ # # ca-certificates are needed for attach_workspace (and git over https)
248
+ # command: apt-get update && apt-get install -y ca-certificates git make openssh-client
249
+ # - attach_workspace:
250
+ # at: /workspace
251
+ # - store_artifacts:
252
+ # path: /workspace/images
253
+ # destination: .
254
+
255
+ push-pkgs-to-hub :
138
256
docker :
139
257
- image : debian:stretch
140
258
steps :
@@ -144,7 +262,7 @@ jobs:
144
262
- run :
145
263
name : Install packages
146
264
# ca-certificates are needed for attach_workspace (and git over https)
147
- command : apt-get update && apt-get install -y ca-certificates
265
+ command : apt-get update && apt-get install -y ca-certificates expect git jq openssh-client
148
266
- attach_workspace :
149
267
at : /workspace
150
268
- checkout
@@ -157,10 +275,33 @@ jobs:
157
275
- run :
158
276
name : Import packages
159
277
command : |
278
+ ls -lhRt /workspace/
279
+ cat /workspace/packages/*.tag
280
+ echo
160
281
for pkg in /workspace/packages/*.tar ; do
161
282
docker image load --input $pkg
162
283
done
284
+ echo
163
285
docker image ls --all
286
+ - run :
287
+ name : Login & setup content trust
288
+ command : |
289
+ docker login -u $DOCKER_USER -p $DOCKER_PASS
290
+ mkdir -p ~/.docker/trust/private
291
+ cp .circleci/content-trust.key ~/.docker/trust/private/b056f84873aa0be205dfe826afa6e7458120c9569dd19a2a84154498fb1165d5.key
292
+ - run :
293
+ name : Push packages
294
+ command : |
295
+ # PRs from forks do not have access to the necessary secrets to do the push.
296
+ if [ -z "$DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE" ] ; then
297
+ echo "DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE not set (likely this is a PR from a fork)."
298
+ echo "No credentials available, not pushing to hub."
299
+ exit 0
300
+ fi
301
+
302
+ # Just one for testing now
303
+ linuxkit pkg push --nobuild pkg/cri-containerd
304
+
164
305
workflows :
165
306
version : 2
166
307
build :
@@ -182,9 +323,55 @@ workflows:
182
323
- pkg-image-cache-control-plane :
183
324
requires :
184
325
- dependencies
185
- - pkgs :
326
+ # - pkgs:
327
+ # requires:
328
+ # - pkg-kubelet
329
+ # - pkg-cri-containerd
330
+ # - pkg-image-cache-common
331
+ # - pkg-image-cache-control-plane
332
+
333
+ - image-docker-weave :
334
+ requires :
335
+ - dependencies
336
+ - pkg-kubelet
337
+ - pkg-image-cache-common
338
+ - pkg-image-cache-control-plane
339
+ - image-docker-bridge :
340
+ requires :
341
+ - dependencies
342
+ - pkg-kubelet
343
+ - pkg-image-cache-common
344
+ - pkg-image-cache-control-plane
345
+ - image-cri-containerd-weave :
346
+ requires :
347
+ - dependencies
348
+ - pkg-kubelet
349
+ - pkg-cri-containerd
350
+ - image-cri-containerd-bridge :
351
+ requires :
352
+ - dependencies
353
+ - pkg-kubelet
354
+ - pkg-cri-containerd
355
+
356
+ # - images:
357
+ # requires:
358
+ # - check-hashes
359
+ # - image-docker-weave
360
+ # - image-docker-bridge
361
+ # - image-cri-containerd-weave
362
+ # - image-cri-containerd-bridge
363
+
364
+ - push-pkgs-to-hub :
365
+ # We want everything to have passed, which is a bit
366
+ # tedious. Some of these are already covered transitively,
367
+ # but be more explicit.
186
368
requires :
369
+ - check-hashes
187
370
- pkg-kubelet
188
371
- pkg-cri-containerd
189
372
- pkg-image-cache-common
190
373
- pkg-image-cache-control-plane
374
+ - image-docker-weave
375
+ - image-docker-bridge
376
+ - image-cri-containerd-weave
377
+ - image-cri-containerd-bridge
0 commit comments