From 86e2b414a279014784473888e1a05325a59146b8 Mon Sep 17 00:00:00 2001 From: JinwooHwang Date: Sun, 20 Sep 2026 12:15:48 -0400 Subject: [PATCH] GEODE-10654: Publish multi-architecture release docker images The release images were built with the default docker driver, which produces an image only for the host architecture. Releases cut on an arm64 machine therefore published arm64-only images, which cannot run on amd64 hosts. Build with a container-driver buildx builder and push a manifest covering linux/amd64 and linux/arm64. A multi-platform result cannot be loaded into the local image store, so the tagged image is now built and pushed in a single step. --- dev-tools/release/promote_rc.sh | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/dev-tools/release/promote_rc.sh b/dev-tools/release/promote_rc.sh index 6e3f218bf7e..82d38b3d58d 100755 --- a/dev-tools/release/promote_rc.sh +++ b/dev-tools/release/promote_rc.sh @@ -84,6 +84,8 @@ GEODE_BENCHMARKS=$WORKSPACE/geode-benchmarks GEODE_BENCHMARKS_DEVELOP=$WORKSPACE/geode-benchmarks-develop BREW_DIR=$WORKSPACE/homebrew-core SVN_DIR=$WORKSPACE/dist/dev/geode +DOCKER_BUILDER=geode-release +DOCKER_PLATFORMS=linux/amd64,linux/arm64 set +x if [ -d "$GEODE" ] && [ -d "$GEODE_DEVELOP" ] && [ -d "$GEODE_EXAMPLES" ] && [ -d "$GEODE_NATIVE" ] && [ -d "$GEODE_NATIVE_DEVELOP" ] && [ -d "$GEODE_BENCHMARKS" ] && [ -d "$GEODE_BENCHMARKS_DEVELOP" ] && [ -d "$BREW_DIR" ] && [ -d "$SVN_DIR" ] ; then @@ -314,6 +316,9 @@ echo "Building Geode docker image" echo "============================================================" set -x cd ${GEODE}/docker +#the default docker driver builds only for the host architecture, so use a +#container-driver builder, which can produce a manifest covering both +docker buildx inspect ${DOCKER_BUILDER} >/dev/null 2>&1 || docker buildx create --name ${DOCKER_BUILDER} --driver docker-container --bootstrap sed -e '/www.apache.org.dyn.closer/d' -i.backup Dockerfile if ! docker build . ; then echo retrying in 1 minute... @@ -333,8 +338,6 @@ if ! docker build . ; then fi fi mv Dockerfile.backup Dockerfile -docker build -t apache/geode:${VERSION} . -[ -n "$LATER" ] || docker build -t apache/geode:latest . set +x @@ -361,8 +364,11 @@ echo "============================================================" set -x cd ${GEODE}/docker docker login -docker push apache/geode:${VERSION} -[ -n "$LATER" ] || docker push apache/geode:latest +#a multi-platform result cannot be loaded into the local image store, so the +#tagged image is built and pushed in a single step +latesttag="" +[ -n "$LATER" ] || latesttag="-t apache/geode:latest" +docker buildx build --builder ${DOCKER_BUILDER} --platform ${DOCKER_PLATFORMS} -t apache/geode:${VERSION} ${latesttag} --push . set +x