Files
kubeviz/scripts/deploy-with-podman.sh
Clemens Hering 8463e0ddb6
Some checks failed
Deploy KubeViz / deploy (push) Failing after 27s
Automatic Rollout
2026-03-01 09:40:11 +01:00

95 lines
3.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
IMAGE_REPO="${IMAGE_REPO:-localhost/kubeviz}"
IMAGE_TAG="${IMAGE_TAG:-prod}"
SERVICE_NAME="${SERVICE_NAME:-kubeviz.service}"
SYSTEMD_SCOPE="${SYSTEMD_SCOPE:-user}"
INSTALL_QUADLET="${INSTALL_QUADLET:-true}"
QUADLET_SRC="${QUADLET_SRC:-deploy/quadlet/kubeviz-traefik.container}"
USER_QUADLET_DIR="${USER_QUADLET_DIR:-${HOME}/.config/containers/systemd}"
SYSTEM_QUADLET_DIR="${SYSTEM_QUADLET_DIR:-/etc/containers/systemd}"
PODMAN_USE_SUDO="${PODMAN_USE_SUDO:-}"
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
if [ -z "${PODMAN_USE_SUDO}" ]; then
if [ "${SYSTEMD_SCOPE}" = "system" ]; then
PODMAN_USE_SUDO="true"
else
PODMAN_USE_SUDO="false"
fi
fi
PODMAN_CMD=(podman)
SYSTEMCTL_CMD=(systemctl --user)
if [ "${PODMAN_USE_SUDO}" = "true" ]; then
PODMAN_CMD=(sudo podman)
fi
if [ "${SYSTEMD_SCOPE}" = "system" ]; then
SYSTEMCTL_CMD=(sudo systemctl)
QUADLET_TARGET_DIR="${SYSTEM_QUADLET_DIR}"
else
SYSTEMCTL_CMD=(systemctl --user)
QUADLET_TARGET_DIR="${USER_QUADLET_DIR}"
if [ -z "${XDG_RUNTIME_DIR:-}" ]; then
export XDG_RUNTIME_DIR="/run/user/$(id -u)"
fi
fi
if [ -n "${REGISTRY_AUTH_FILE:-}" ] && [ -f "${REGISTRY_AUTH_FILE}" ]; then
export REGISTRY_AUTH_FILE
if [ "${PODMAN_USE_SUDO}" = "true" ]; then
PODMAN_CMD=(sudo --preserve-env=REGISTRY_AUTH_FILE podman)
else
PODMAN_CMD=(podman)
fi
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}"
"${PODMAN_CMD[@]}" build --pull=always -t "${SOURCE_IMAGE}" .
echo "Tagging ${RELEASE_IMAGE}"
"${PODMAN_CMD[@]}" tag "${SOURCE_IMAGE}" "${RELEASE_IMAGE}"
if [ "${INSTALL_QUADLET}" = "true" ]; then
if [ ! -f "${QUADLET_SRC}" ]; then
echo "Quadlet source not found: ${QUADLET_SRC}"
exit 1
fi
echo "Installing quadlet ${QUADLET_SRC} -> ${QUADLET_TARGET_DIR}/kubeviz.container"
if [ "${SYSTEMD_SCOPE}" = "system" ]; then
sudo mkdir -p "${QUADLET_TARGET_DIR}"
sudo cp "${QUADLET_SRC}" "${QUADLET_TARGET_DIR}/kubeviz.container"
else
mkdir -p "${QUADLET_TARGET_DIR}"
cp "${QUADLET_SRC}" "${QUADLET_TARGET_DIR}/kubeviz.container"
fi
fi
echo "Reloading ${SYSTEMD_SCOPE} systemd and restarting ${SERVICE_NAME}"
"${SYSTEMCTL_CMD[@]}" daemon-reload
"${SYSTEMCTL_CMD[@]}" enable --now "${SERVICE_NAME}"
"${SYSTEMCTL_CMD[@]}" restart "${SERVICE_NAME}"
"${SYSTEMCTL_CMD[@]}" is-active --quiet "${SERVICE_NAME}"
echo "Deployment successful: ${RELEASE_IMAGE}"