33set -euo pipefail
44
55# Default values
6- ARCH =" "
6+ ARCHS =" "
77MINA_RELEASE=" stable"
88MINA_BRANCH=" "
99ARCHIVE_NODE_API_VERSION=" 1.0.0"
@@ -18,7 +18,7 @@ usage() {
1818 echo " Usage: $0 [OPTIONS]"
1919 echo " "
2020 echo " Options:"
21- echo " -a, --arch ARCH Architecture (required)"
21+ echo " -a, --archs ARCHS Architecture (required)"
2222 echo " -m, --mina-release VERSION Mina release (required)"
2323 echo " -b, --mina-branch BRANCH Mina branch (optional)"
2424 echo " -n, --archive-api-version PATH Archive-Node-API version (required)"
@@ -30,14 +30,14 @@ usage() {
3030 echo " -h, --help Display this help message"
3131 echo " "
3232 echo " Example:"
33- echo " $0 --arch amd64 --mina-version 3.3.0* --archive-api-version v1.0.0 --proof-level full --accounts-manager-version 1.0.0 --docker-user myuser --tag latest"
33+ echo " $0 --archs arm64, amd64 --mina-version 3.3.0* --archive-api-version v1.0.0 --proof-level full --accounts-manager-version 1.0.0 --docker-user myuser --tag latest"
3434}
3535
3636# Parse command line arguments
3737while [[ $# -gt 0 ]]; do
3838 case $1 in
39- -a|--arch )
40- ARCH =" $2 "
39+ -a|--archs )
40+ ARCHS =" $2 "
4141 shift 2
4242 ;;
4343 -m|--mina-release)
@@ -87,8 +87,8 @@ while [[ $# -gt 0 ]]; do
8787done
8888
8989# Validate required parameters
90- if [[ -z " $ARCH " ]]; then
91- echo " Error: Architecture (-a/--arch) is required"
90+ if [[ -z " $ARCHS " ]]; then
91+ echo " Error: Architectures (-a/--archs) are required"
9292 usage
9393 exit 1
9494fi
@@ -151,19 +151,30 @@ case $MINA_RELEASE in
151151 ;;
152152esac
153153
154+ # Convert ARCHS to platform format (linux/{arch})
155+ PLATFORMS=" "
156+ IFS=' ,' read -ra ARCH_ARRAY <<< " $ARCHS"
157+ for arch in " ${ARCH_ARRAY[@]} " ; do
158+ if [[ -z " $PLATFORMS " ]]; then
159+ PLATFORMS=" linux/${arch} "
160+ else
161+ PLATFORMS=" ${PLATFORMS} ,linux/${arch} "
162+ fi
163+ done
164+
154165echo " "
155166echo " Building the Docker image..."
156167echo " "
157- docker rmi -f ${DOCKER_HUB_USER_NAME} /mina-local-network:${DOCKER_HUB_IMAGE_TAG} - ${ARCH} || true
168+ docker rmi -f ${DOCKER_HUB_USER_NAME} /mina-local-network:${DOCKER_HUB_IMAGE_TAG} || true
158169docker rmi -f mina-local-network || true
159- docker build --platform linux/ ${ARCH } -t mina-local-network:${DOCKER_HUB_IMAGE_TAG} - ${ARCH } --build-arg=" MINA_PROFILE=${MINA_PROFILE} " --build-arg=" MINA_REPO=${MINA_REPO} " --build-arg=" MINA_BRANCH=${MINA_BRANCH} " --build-arg=" ARCHIVE_NODE_API_TAG=${ARCHIVE_NODE_API_VERSION} " --build-arg=" MINA_ACCOUNTS_MANAGER_VERSION=${ACCOUNTS_MANAGER_VERSION} " --build-arg=" PROOF_LEVEL=${PROOF_LEVEL} " . -f configuration/Dockerfile
170+ docker buildx build --platform ${PLATFORMS } -t mina-local-network:${DOCKER_HUB_IMAGE_TAG} --build-arg=" MINA_PROFILE=${MINA_PROFILE} " --build-arg=" MINA_REPO=${MINA_REPO} " --build-arg=" MINA_BRANCH=${MINA_BRANCH} " --build-arg=" ARCHIVE_NODE_API_TAG=${ARCHIVE_NODE_API_VERSION} " --build-arg=" MINA_ACCOUNTS_MANAGER_VERSION=${ACCOUNTS_MANAGER_VERSION} " --build-arg=" PROOF_LEVEL=${PROOF_LEVEL} " . -f configuration/Dockerfile
160171
161172
162173if [[ $PUSH -eq 1 ]]; then
163174 echo " "
164175 echo " Publishing the Docker image..."
165- docker tag mina-local-network ${DOCKER_HUB_USER_NAME} /mina-local-network:${DOCKER_HUB_IMAGE_TAG} - ${ARCH}
166- docker push ${DOCKER_HUB_USER_NAME} /mina-local-network:${DOCKER_HUB_IMAGE_TAG} - ${ARCH}
176+ docker tag mina-local-network ${DOCKER_HUB_USER_NAME} /mina-local-network:${DOCKER_HUB_IMAGE_TAG}
177+ docker push ${DOCKER_HUB_USER_NAME} /mina-local-network:${DOCKER_HUB_IMAGE_TAG}
167178
168179else
169180 echo " "
0 commit comments