-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathbuild-multiplatform-images.sh
executable file
·66 lines (49 loc) · 3.79 KB
/
build-multiplatform-images.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/bin/bash
set -e
D=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
IMAGE_BASE="curity.azurecr.io/curity/idsvr"
DOCKER_CONTEXT="$D/$VERSION"
LATEST_VERSION=$(find -- * -maxdepth 0 -type d | sort -rh | head -n 1)
FORCE_BUILD=${FORCE_DISTRO:-none}
build_multiplatform_image() {
DOCKERFILE=$1
X86_LAYER_ID=$2
ARM_LAYER_ID=$3
docker pull "$4" --platform linux/amd64 || true
X86_IMAGE_INSPECT=$(docker inspect "$4" || true)
docker pull "$4" --platform linux/arm64 || true
ARM_IMAGE_INSPECT=$(docker inspect "$4" || true)
if [[ $X86_IMAGE_INSPECT != *$X86_LAYER_ID* ]] || [[ $ARM_IMAGE_INSPECT != *$ARM_LAYER_ID* ]] ||
[[ $DOCKERFILE == *$FORCE_BUILD* ]] || [[ $FORCE_UPDATE_VERSION == *$VERSION* ]]; then
TARGET_ARCH=-amd64 ARTIFACT=linux "$D"/download-release.sh
TARGET_ARCH=-arm64 ARTIFACT=linux-arm "$D"/download-release.sh
for TAG in "${@:4}"
do
if [[ -n "${PUSH_IMAGES}" ]]; then PUSH="--push"; else PUSH=""; fi
echo "Running docker buildx for tag: ${TAG} with parameters --platform linux/amd64,linux/arm64 ${PUSH}"
docker buildx build --platform linux/amd64,linux/arm64 ${PUSH} -t "${TAG}" -f "${DOCKERFILE}" "${DOCKER_CONTEXT}"
done
else
echo "$4 is based on the latest base image, skip building"
fi
}
if [[ "$VERSION" == "$LATEST_VERSION" ]]; then LATEST_TAG="${IMAGE_BASE}:latest"; else LATEST_TAG=""; fi
BRANCH_VERSION=${VERSION%??}
MAJOR_VERSION=${BRANCH_VERSION%??}
EXTRA_TAGS_UBUNTU="${IMAGE_BASE}:${BRANCH_VERSION}-ubuntu ${IMAGE_BASE}:${BRANCH_VERSION} ${IMAGE_BASE}:${BRANCH_VERSION}-ubuntu22 ${IMAGE_BASE}:${BRANCH_VERSION}-ubuntu22.04"
build_multiplatform_image "${VERSION}/ubuntu/Dockerfile" "$UBUNTU_X86_LAST_LAYER_ID" "$UBUNTU_ARM_LAST_LAYER_ID" "${IMAGE_BASE}:${VERSION}-ubuntu22.04" "${IMAGE_BASE}:${VERSION}-ubuntu" "${IMAGE_BASE}:${VERSION}-ubuntu22" "${IMAGE_BASE}:${VERSION}" $LATEST_TAG $EXTRA_TAGS_UBUNTU
if [ "${MAJOR_VERSION}" == "8" ]; then
EXTRA_TAGS_BUSTER="${IMAGE_BASE}:${BRANCH_VERSION}-buster"
build_multiplatform_image "${VERSION}/buster/Dockerfile" "$BUSTER_X86_LAST_LAYER_ID" "$BUSTER_ARM_LAST_LAYER_ID" "${IMAGE_BASE}:${VERSION}-buster" $EXTRA_TAGS_BUSTER
EXTRA_TAGS_BUSTER_SLIM="${IMAGE_BASE}:${BRANCH_VERSION}-buster-slim ${IMAGE_BASE}:${BRANCH_VERSION}-slim"
build_multiplatform_image "${VERSION}/buster-slim/Dockerfile" "$BUSTER_SLIM_X86_LAST_LAYER_ID" "$BUSTER_SLIM_ARM_LAST_LAYER_ID" "${IMAGE_BASE}:${VERSION}-buster-slim" "${IMAGE_BASE}:${VERSION}-slim" $EXTRA_TAGS_BUSTER_SLIM
EXTRA_TAGS_CENTOS="${IMAGE_BASE}:${BRANCH_VERSION}-centos8 ${IMAGE_BASE}:${BRANCH_VERSION}-centos"
build_multiplatform_image "${VERSION}/centos/Dockerfile" "$CENTOS_X86_LAST_LAYER_ID" "$CENTOS_ARM_LAST_LAYER_ID" "${IMAGE_BASE}:${VERSION}-centos8" "${IMAGE_BASE}:${VERSION}-centos" $EXTRA_TAGS_CENTOS
else
EXTRA_TAGS_BOOKWORM="${IMAGE_BASE}:${BRANCH_VERSION}-debian ${IMAGE_BASE}:${BRANCH_VERSION}-bookworm"
build_multiplatform_image "${VERSION}/debian/Dockerfile" "$BOOKWORM_X86_LAST_LAYER_ID" "$BOOKWORM_ARM_LAST_LAYER_ID" "${IMAGE_BASE}:${VERSION}-bookworm" ${IMAGE_BASE}:${VERSION}-debian $EXTRA_TAGS_BOOKWORM
EXTRA_TAGS_BOOKWORM_SLIM="${IMAGE_BASE}:${BRANCH_VERSION}-bookworm-slim ${IMAGE_BASE}:${BRANCH_VERSION}-slim ${IMAGE_BASE}:${BRANCH_VERSION}-debian-slim"
build_multiplatform_image "${VERSION}/debian-slim/Dockerfile" "$BOOKWORM_SLIM_X86_LAST_LAYER_ID" "$BOOKWORM_SLIM_ARM_LAST_LAYER_ID" "${IMAGE_BASE}:${VERSION}-bookworm-slim" "${IMAGE_BASE}:${VERSION}-slim" "${IMAGE_BASE}:${VERSION}-debian-slim" $EXTRA_TAGS_BOOKWORM_SLIM
EXTRA_TAGS_CENTOS9="${IMAGE_BASE}:${BRANCH_VERSION}-centos9 ${IMAGE_BASE}:${BRANCH_VERSION}-centos"
build_multiplatform_image "${VERSION}/centos/Dockerfile" "$CENTOS9_X86_LAST_LAYER_ID" "$CENTOS9_ARM_LAST_LAYER_ID" "${IMAGE_BASE}:${VERSION}-centos9" "${IMAGE_BASE}:${VERSION}-centos" $EXTRA_TAGS_CENTOS9
fi