#!/usr/bin/env bash set -euo pipefail IMAGE_REPO="${IMAGE_REPO:-localhost/kubeviz}" IMAGE_TAG="${IMAGE_TAG:-prod}" SERVICE_NAME="${SERVICE_NAME:-kubeviz.service}" if [ -z "${REGISTRY_AUTH_FILE:-}" ]; then if [ -n "${XDG_RUNTIME_DIR:-}" ] && [ -f "${XDG_RUNTIME_DIR}/containers/auth.json" ]; then REGISTRY_AUTH_FILE="${XDG_RUNTIME_DIR}/containers/auth.json" elif [ -f "${HOME}/.config/containers/auth.json" ]; then REGISTRY_AUTH_FILE="${HOME}/.config/containers/auth.json" fi fi SUDO_PODMAN=(sudo podman) if [ -n "${REGISTRY_AUTH_FILE:-}" ] && [ -f "${REGISTRY_AUTH_FILE}" ]; then export REGISTRY_AUTH_FILE SUDO_PODMAN=(sudo --preserve-env=REGISTRY_AUTH_FILE podman) echo "Using registry auth file: ${REGISTRY_AUTH_FILE}" else echo "Warning: no REGISTRY_AUTH_FILE found; private base image pulls may fail." fi if git rev-parse --short=12 HEAD >/dev/null 2>&1; then BUILD_ID="$(git rev-parse --short=12 HEAD)" else BUILD_ID="$(date +%s)" fi SOURCE_IMAGE="${IMAGE_REPO}:ci-${BUILD_ID}" RELEASE_IMAGE="${IMAGE_REPO}:${IMAGE_TAG}" echo "Building ${SOURCE_IMAGE}" "${SUDO_PODMAN[@]}" build --pull=always -t "${SOURCE_IMAGE}" . echo "Tagging ${RELEASE_IMAGE}" "${SUDO_PODMAN[@]}" tag "${SOURCE_IMAGE}" "${RELEASE_IMAGE}" echo "Restarting ${SERVICE_NAME}" sudo systemctl restart "${SERVICE_NAME}" sudo systemctl is-active --quiet "${SERVICE_NAME}" echo "Deployment successful: ${RELEASE_IMAGE}"