Files

62 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# Build and push a release image to a private registry (default: registry.kshaitry.com).
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
cd "${ROOT_DIR}"
REGISTRY="${REGISTRY:-registry.kshaitry.com}"
IMAGE_NAME="${IMAGE_NAME:-readeck-proxy}"
DOCKERFILE="${DOCKERFILE:-docker/app/Dockerfile.release}"
BASE_REGISTRY="${BASE_REGISTRY:-registry-group.kshaitry.com/library}"
VERSION="${1:-}"
if [[ -z "${VERSION}" ]]; then
echo "Usage: $(basename "$0") <version>"
echo "Example: $(basename "$0") 1.0.0"
echo ""
echo "Environment overrides:"
echo " REGISTRY (default: registry.kshaitry.com)"
echo " IMAGE_NAME (default: readeck-proxy)"
echo " BASE_REGISTRY (default: registry-group.kshaitry.com/library — Swift/Ubuntu base images)"
exit 1
fi
if [[ ! -f "${DOCKERFILE}" ]]; then
echo "error: ${DOCKERFILE} not found" >&2
exit 1
fi
if ! command -v docker &>/dev/null; then
echo "error: docker not found on PATH" >&2
exit 1
fi
docker info &>/dev/null || {
echo "error: Docker daemon not reachable" >&2
exit 1
}
TAG="${REGISTRY}/${IMAGE_NAME}:${VERSION}"
TAG_LATEST="${REGISTRY}/${IMAGE_NAME}:latest"
echo "==> Building release image: ${TAG}"
docker build \
-f "${DOCKERFILE}" \
--build-arg "BASE_REGISTRY=${BASE_REGISTRY}" \
-t "${TAG}" \
-t "${TAG_LATEST}" \
.
echo "==> Pushing ${TAG}"
docker push "${TAG}"
echo "==> Pushing ${TAG_LATEST}"
docker push "${TAG_LATEST}"
echo "==> Done. Published:"
echo " ${TAG}"
echo " ${TAG_LATEST}"