Skip to content
This repository was archived by the owner on Jun 22, 2024. It is now read-only.

Commit 0773a10

Browse files
committed
first step to create manifests
1 parent e2db7fd commit 0773a10

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

.circleci/config.yml

+104
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,96 @@ jobs:
141141
ARCH=$(echo << parameters.platforms >> | sed 's/linux\///')
142142
USE_RANDOM_USER_ID=${USE_RANDOM_USER} NAMESPACE=${NAMESPACE} VERSION=${BRANCH}_${ARCH} BUILD_DATE=${BUILD_DATE} SKIP_BUILD=true make test_${ARCH}
143143
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+
144234
deploy-multi-arch:
145235
parameters:
146236
platforms:
@@ -365,6 +455,20 @@ workflows:
365455
requires: [build-multi-arch-amd64]
366456
platforms: linux/amd64
367457
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 ]
368472

369473
deploy-multi-arch-full-grid:
370474
jobs:

0 commit comments

Comments
 (0)