@@ -141,6 +141,96 @@ jobs:
141
141
ARCH=$(echo << parameters.platforms >> | sed 's/linux\///')
142
142
USE_RANDOM_USER_ID=${USE_RANDOM_USER} NAMESPACE=${NAMESPACE} VERSION=${BRANCH}_${ARCH} BUILD_DATE=${BUILD_DATE} SKIP_BUILD=true make test_${ARCH}
143
143
144
+ manifest-multi-arch :
145
+ parameters :
146
+ image-name :
147
+ type : string
148
+ machine-type :
149
+ type : executor
150
+ executor : << parameters.machine-type >>
151
+ environment :
152
+ NAMESPACE : seleniarm
153
+ BUILD_DATE : today
154
+ steps :
155
+ - checkout
156
+ - restore_cache :
157
+ keys :
158
+ - multi-arch-images-{{ .Branch }}-{{ .Environment.CIRCLE_WORKFLOW_ID }}-linux/arm64
159
+ - restore_cache :
160
+ keys :
161
+ - multi-arch-images-{{ .Branch }}-{{ .Environment.CIRCLE_WORKFLOW_ID }}-linux/amd64
162
+ - run : uname -a
163
+ - run : docker info
164
+ - run :
165
+ name : " Load built images from cache into Docker"
166
+ command : |
167
+ echo "CIRCLE_WORKFLOW_ID = " $CIRCLE_WORKFLOW_ID
168
+ docker load -i images/arm64.tar
169
+ docker load -i images/amd64.tar
170
+ - run :
171
+ name : " Create manifest"
172
+ command : |
173
+ export VERSION=${CIRCLE_BRANCH//\//-}
174
+ export IMAGE_NAME=$NAMESPACE/<< parameters.image-name >>
175
+ export MANIFEST_TAG=${VERSION}-${BUILD_DATE}
176
+ export ARM_TAG=${VERSION}_arm64-${BUILD_DATE}
177
+ export AMD_TAG=${VERSION}_amd64-${BUILD_DATE}
178
+ echo "Creating ${IMAGE_NAME}:${MANIFEST_TAG} based on ${IMAGE_NAME}:${ARM_TAG} and ${IMAGE_NAME}:${AMD_TAG}"
179
+ echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin
180
+ docker push ${IMAGE_NAME}:${ARM_TAG}
181
+ docker push ${IMAGE_NAME}:${AMD_TAG}
182
+ docker manifest create ${IMAGE_NAME}:${MANIFEST_TAG} ${IMAGE_NAME}:${ARM_TAG} ${IMAGE_NAME}:${AMD_TAG}
183
+ docker manifest push ${IMAGE_NAME}:${MANIFEST_TAG}
184
+ - run :
185
+ name : " Inspect manifest"
186
+ command : |
187
+ export VERSION=${CIRCLE_BRANCH//\//-}
188
+ export IMAGE_NAME=$NAMESPACE/<< parameters.image-name >>
189
+ export MANIFEST_TAG=${VERSION}-${BUILD_DATE}
190
+ docker manifest inspect ${IMAGE_NAME}:${MANIFEST_TAG}
191
+
192
+ manifest-amd-only-arch :
193
+ parameters :
194
+ image-name :
195
+ type : string
196
+ machine-type :
197
+ type : executor
198
+ executor : << parameters.machine-type >>
199
+ environment :
200
+ NAMESPACE : seleniarm
201
+ BUILD_DATE : today
202
+ steps :
203
+ - checkout
204
+ - restore_cache :
205
+ keys :
206
+ - multi-arch-images-{{ .Branch }}-{{ .Environment.CIRCLE_WORKFLOW_ID }}-linux/amd64
207
+ - run : uname -a
208
+ - run : docker info
209
+ - run :
210
+ name : " Load built images from cache into Docker"
211
+ command : |
212
+ echo "CIRCLE_WORKFLOW_ID = " $CIRCLE_WORKFLOW_ID
213
+ docker load -i images/amd64.tar
214
+ - run :
215
+ name : " Create manifest"
216
+ command : |
217
+ export VERSION=${CIRCLE_BRANCH//\//-}
218
+ export IMAGE_NAME=$NAMESPACE/<< parameters.image-name >>
219
+ export MANIFEST_TAG=${VERSION}-${BUILD_DATE}
220
+ export AMD_TAG=${VERSION}_amd64-${BUILD_DATE}
221
+ echo "Creating ${IMAGE_NAME}:${MANIFEST_TAG} based on ${IMAGE_NAME}:${AMD_TAG}"
222
+ echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin
223
+ docker push ${IMAGE_NAME}:${AMD_TAG}
224
+ docker manifest create ${IMAGE_NAME}:${MANIFEST_TAG} ${IMAGE_NAME}:${AMD_TAG}
225
+ docker manifest push ${IMAGE_NAME}:${MANIFEST_TAG}
226
+ - run :
227
+ name : " Inspect manifest"
228
+ command : |
229
+ export VERSION=${CIRCLE_BRANCH//\//-}
230
+ export IMAGE_NAME=$NAMESPACE/<< parameters.image-name >>
231
+ export MANIFEST_TAG=${VERSION}-${BUILD_DATE}
232
+ docker manifest inspect ${IMAGE_NAME}:${MANIFEST_TAG}
233
+
144
234
deploy-multi-arch :
145
235
parameters :
146
236
platforms :
@@ -365,6 +455,20 @@ workflows:
365
455
requires : [build-multi-arch-amd64]
366
456
platforms : linux/amd64
367
457
machine-type : ubuntu2204amd64
458
+ - manifest-multi-arch :
459
+ name : manifest-multi-arch-<< matrix.image-name >>
460
+ requires : [test-multi-arch-arm64, test-multi-arch-amd64]
461
+ machine-type : ubuntu2204amd64
462
+ matrix :
463
+ parameters :
464
+ image-name : [ base, node-base, hub, node-chromium, standalone-chromium, node-firefox, standalone-firefox ]
465
+ - manifest-amd-only-arch :
466
+ name : manifest-amd-arch-<< matrix.image-name >>
467
+ requires : [test-multi-arch-amd64]
468
+ machine-type : ubuntu2204amd64
469
+ matrix :
470
+ parameters :
471
+ image-name : [ node-chrome, standalone-chrome, node-edge, standalone-edge ]
368
472
369
473
deploy-multi-arch-full-grid :
370
474
jobs :
0 commit comments