move build-multi-arch-image.sh to scripts/

Signed-off-by: Niels de Vos <ndevos@redhat.com>
(cherry picked from commit 5a4517e38e)
This commit is contained in:
Niels de Vos
2020-04-24 11:12:25 +02:00
committed by mergify[bot]
parent a4f4458c02
commit b8c17b096f
2 changed files with 3 additions and 1 deletions

View File

@ -0,0 +1,33 @@
#!/bin/bash
set -xe
# "docker manifest" requires experimental feature enabled
export DOCKER_CLI_EXPERIMENTAL=enabled
cd "$(dirname "${0}")/.."
# ceph base image used for building multi architecture images
dockerfile="deploy/cephcsi/image/Dockerfile"
baseimg=$(awk -F = '/^ARG BASE_IMAGE=/ {print $NF}' "${dockerfile}")
# get image digest per architecture
# {
# "arch": "amd64",
# "digest": "sha256:XXX"
# }
# {
# "arch": "arm64",
# "digest": "sha256:YYY"
# }
manifests=$(docker manifest inspect "${baseimg}" | jq '.manifests[] | {arch: .platform.architecture, digest: .digest}')
# qemu-user-static is to enable an execution of different multi-architecture containers by QEMU
# more info at https://github.com/multiarch/qemu-user-static
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# build and push per arch images
for ARCH in amd64 arm64; do
ifs=$IFS
IFS=
digest=$(awk -v ARCH=${ARCH} '{if (archfound) {print $NF; exit 0}}; {archfound=($0 ~ "arch.*"ARCH)}' <<<"${manifests}")
IFS=$ifs
base_img=${baseimg}@${digest}
GOARCH=${ARCH} BASE_IMAGE=${base_img} make image-cephcsi
done