#!/usr/bin/env bash set -euo pipefail ROOT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd) REGISTRY=${REGISTRY:-registry.bstein.dev} IMAGE_PREFIX=${IMAGE_PREFIX:-${REGISTRY}/lesavka} IMAGE_TAG=${IMAGE_TAG:-$(git -C "${ROOT_DIR}" rev-parse --short HEAD)} PUSH_IMAGES=${PUSH_IMAGES:-1} PLATFORMS=${PLATFORMS:-linux/amd64,linux/arm64} should_push() { case "${PUSH_IMAGES}" in 1|true|TRUE|yes|YES) return 0 ;; *) return 1 ;; esac } build_with_buildx() { local dockerfile=$1 local image=$2 if should_push; then docker buildx build \ --platform "${PLATFORMS}" \ -f "${dockerfile}" \ -t "${image}:${IMAGE_TAG}" \ -t "${image}:latest" \ --push \ "${ROOT_DIR}" else docker buildx build \ --platform "${PLATFORMS}" \ -f "${dockerfile}" \ -t "${image}:${IMAGE_TAG}" \ -t "${image}:latest" \ --load \ "${ROOT_DIR}" fi } build_with_docker() { local dockerfile=$1 local image=$2 docker build \ -f "${dockerfile}" \ -t "${image}:${IMAGE_TAG}" \ -t "${image}:latest" \ "${ROOT_DIR}" if should_push; then docker push "${image}:${IMAGE_TAG}" docker push "${image}:latest" fi } if docker buildx version >/dev/null 2>&1; then build_with_buildx "${ROOT_DIR}/docker/server.Dockerfile" "${IMAGE_PREFIX}/server" build_with_buildx "${ROOT_DIR}/docker/client.Dockerfile" "${IMAGE_PREFIX}/client" else build_with_docker "${ROOT_DIR}/docker/server.Dockerfile" "${IMAGE_PREFIX}/server" build_with_docker "${ROOT_DIR}/docker/client.Dockerfile" "${IMAGE_PREFIX}/client" fi