62 lines
1.6 KiB
Bash
Executable File
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}"
|