diff --git a/build-push-acr.sh b/build-push-acr.sh new file mode 100755 index 0000000..86d1df8 --- /dev/null +++ b/build-push-acr.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash +set -euo pipefail + +script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +require() { + local name="$1" + if [[ -z "${!name:-}" ]]; then + echo "Missing env: ${name}" >&2 + exit 2 + fi +} + +require ACR_REGISTRY +require ACR_NAMESPACE + +image_repo="${IMAGE_REPO:-digital-archive-frontend}" +image_tag="${IMAGE_TAG:-}" + +if [[ -z "$image_tag" ]]; then + if command -v git >/dev/null 2>&1; then + image_tag="$(git -C "$script_dir" rev-parse --short HEAD 2>/dev/null || true)" + fi +fi + +if [[ -z "$image_tag" ]]; then + image_tag="$(date +%Y%m%d%H%M%S)" +fi + +image_ref="${ACR_REGISTRY}/${ACR_NAMESPACE}/${image_repo}:${image_tag}" + +if [[ -n "${ACR_USERNAME:-}" && -n "${ACR_PASSWORD:-}" ]]; then + printf '%s' "$ACR_PASSWORD" | docker login "$ACR_REGISTRY" -u "$ACR_USERNAME" --password-stdin +fi + +build_args=() +if [[ -n "${PKG_MANAGER:-}" ]]; then + build_args+=(--build-arg "PKG_MANAGER=${PKG_MANAGER}") +fi +if [[ -n "${NPM_REGISTRY:-}" ]]; then + build_args+=(--build-arg "NPM_REGISTRY=${NPM_REGISTRY}") +fi + +docker build \ + -f "$script_dir/Dockerfile" \ + -t "$image_ref" \ + "${build_args[@]}" \ + "$script_dir" + +docker push "$image_ref" + +echo "Pushed: $image_ref" +echo "WEB_IMAGE=$image_ref"