#!/bin/bash # Exit on error set -e # DIRECTORIES SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) MAIN_DIR=$(cd "${SCRIPT_DIR}/.." && pwd) EXE_DIR="${MAIN_DIR}/output" # FUNCTIONS function title() { echo "----------------------------------------" # Center the text local text="$1" local line_length=40 local text_length=${#text} local padding=$(( (line_length - text_length) / 2 )) printf "%*s%s%*s\n" $padding "" "$text" $padding "" echo "----------------------------------------" } function die() { echo " " title "$1" echo " " exit 1 } #-------------------------------- # MAIN #-------------------------------- PREV_DIR=$(pwd) cd "$MAIN_DIR" # build the executables ./build.sh all # push the Docker image to the registry if [ ! -f "${EXE_DIR}/simple_object_storage.amd64" ]; then die "amd64 executable not found" fi if [ ! -f "${EXE_DIR}/simple_object_storage.arm64" ]; then die "arm64 executable not found" fi # clean sos builder. if docker buildx ls | grep -q "sos-builder"; then docker buildx rm sos-builder fi docker buildx create --name sos-builder --use echo "Building multi-platform Docker image" docker buildx build --no-cache --push -t gitea.jde.nz/public/simple-object-storage:latest --platform linux/amd64,linux/arm64 . echo "Build completed successfully!" # switch back to the default builder docker buildx use default cd "$PREV_DIR"