#!/usr/bin/env bash set -euo pipefail required_vars=( BRANCH_NAME COMMIT_SHA REGISTRY_HOST REGISTRY_USERNAME REGISTRY_PASSWORD ) for var_name in "${required_vars[@]}"; do if [[ -z "${!var_name:-}" ]]; then echo "Missing required environment variable: ${var_name}" >&2 exit 1 fi done short_sha="${COMMIT_SHA:0:7}" case "${BRANCH_NAME}" in dev) mutable_tag="dev-latest" immutable_tag="dev-${short_sha}" ;; release) mutable_tag="rc-release" immutable_tag="rc-${short_sha}" ;; release/*) release_name="${BRANCH_NAME#release/}" release_slug="${release_name//\//-}" mutable_tag="rc-${release_slug}" immutable_tag="rc-${short_sha}" ;; main) mutable_tag="latest" immutable_tag="sha-${short_sha}" ;; *) echo "Unsupported branch for publishing: ${BRANCH_NAME}" >&2 exit 1 ;; esac backend_image="${REGISTRY_HOST}/ctms/ctms-backend" frontend_image="${REGISTRY_HOST}/ctms/ctms-frontend" echo "${REGISTRY_PASSWORD}" | docker login "${REGISTRY_HOST}" --username "${REGISTRY_USERNAME}" --password-stdin docker build \ -t "${backend_image}:${mutable_tag}" \ -t "${backend_image}:${immutable_tag}" \ ./backend docker build \ -t "${frontend_image}:${mutable_tag}" \ -t "${frontend_image}:${immutable_tag}" \ ./frontend docker push "${backend_image}:${mutable_tag}" docker push "${backend_image}:${immutable_tag}" docker push "${frontend_image}:${mutable_tag}" docker push "${frontend_image}:${immutable_tag}"