Files
ctms/scripts/build-and-push-registry.sh
T
2026-03-30 20:15:06 +08:00

67 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"
nginx_image="${REGISTRY_HOST}/ctms/ctms-nginx"
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 "${nginx_image}:${mutable_tag}" \
-t "${nginx_image}:${immutable_tag}" \
-f ./nginx/Dockerfile \
.
docker push "${backend_image}:${mutable_tag}"
docker push "${backend_image}:${immutable_tag}"
docker push "${nginx_image}:${mutable_tag}"
docker push "${nginx_image}:${immutable_tag}"