#!/bin/sh set -e usage() { echo " " echo "-----" echo "Builds a Corso docker container image." echo " " echo "-----" echo "Flags" echo " -h|--help Help" echo " -a|--arch Set the architecture to the specified value (default: amd64)" echo " -l|--local Build the corso binary on your local system, rather than a go image" echo " -p|--prefix Prefixes the image name." echo " -s|--suffix Suffixes the version." echo " " echo "-----" echo "Example Usage:" echo " ./build/build-container.sh" echo " ./build/build-container.sh --arch arm64" echo " ./build/build-container.sh --arch arm64 --prefix ghcr.io --suffix nightly" echo " " exit 0 } SCRIPT_ROOT=$(dirname $(readlink -f $0)) PROJECT_ROOT=$(dirname ${SCRIPT_ROOT}) OS=linux ARCH=amd64 IMAGE_NAME_PREFIX= IMAGE_TAG_SUFFIX= LOCAL= while [ "$#" -gt 0 ] do case "$1" in -h|--help) usage exit 0 ;; -a|--arch) ARCH=$2 shift ;; -l|--local) LOCAL=1 ;; -p|--prefix) IMAGE_NAME_PREFIX=$2 shift ;; -s|--suffix) IMAGE_TAG_SUFFIX=$2 shift ;; -*) echo "Invalid flag '$1'. Use -h|--help to see the valid options" >&2 return 1 ;; *) echo "Invalid arg '$1'. Use -h|--help to see the valid options" >&2 return 1 ;; esac shift done TARGETPLATFORM=${OS}/${ARCH} IMAGE_TAG=${OS}-${ARCH} if [ ! -z "${IMAGE_TAG_SUFFIX}" ]; then IMAGE_TAG=${IMAGE_TAG}-${IMAGE_TAG_SUFFIX} fi IMAGE_NAME=alcionai/corso:${IMAGE_TAG} if [ ! -z "${IMAGE_NAME_PREFIX}" ]; then IMAGE_NAME=${IMAGE_NAME_PREFIX}/${IMAGE_NAME} fi if [ -z "$LOCAL" ]; then ${SCRIPT_ROOT}/build.sh --platforms "${TARGETPLATFORM}" else ${SCRIPT_ROOT}/multiplatform-binary.sh --platforms "${TARGETPLATFORM}" fi echo "-----" echo "building corso container ${IMAGE_NAME}" echo "-----" set -x docker buildx build --tag ${IMAGE_NAME} \ --platform ${TARGETPLATFORM} \ --file ${PROJECT_ROOT}/build/Dockerfile \ ${PROJECT_ROOT} set +x echo "-----" echo "container built successfully"