Files
ctms/scripts/build-and-push-registry.sh
T

66 lines
1.5 KiB
Bash

#!/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}"