Listory/hack/build-docker-image.sh

29 lines
820 B
Bash
Raw Normal View History

#!/usr/bin/env bash
set -o pipefail
set -e
PREPARE_OR_PUBLISH="$1"
VERSION="$2"
REPO="apricote/listory"
PLATFORMS="--platform=linux/amd64,linux/arm64"
TAGS="--tag ${REPO}:${VERSION} --tag ${REPO}:latest"
ARGS="--build-arg VERSION=${VERSION} --build-arg GIT_COMMIT=`git rev-parse HEAD`"
CACHE=""
PUSH=""
# We "build" the image twice, once in "prepare" and then again in "publish" stage.
# - Prepare makes sure that the image is buildable and utilizes the remote cache.
# - Publish utilizes the local cache from prepare stage and pushes the image.
if [ "$PREPARE_OR_PUBLISH" = "prepare" ]; then
CACHE="--cache-from=type=registry,ref=${REPO}:buildcache --cache-to=type=registry,ref=${REPO}:buildcache"
else
# Uses local buildkit cache
PUSH="--push"
fi
docker buildx build $PLATFORMS $TAGS $ARGS $CACHE $PUSH .