#!/usr/bin/env bash # Builds the health-agent Docker image and pushes it to Harbor as a release candidate. # Use this to bypass the CI pipeline for manual builds/hotfixes. # # Usage (run from Environment_Monitoring/ root): # HARBOR_CI_TOKEN= ./ops/build-and-push-health-agent.sh # # Optional env vars: # HARBOR_REGISTRY (default: registry.tarla.io) # HARBOR_PROJECT (default: iklimco) # HARBOR_CI_USER (default: robot-ci-push-iklimco) # TAG_SUFFIX (default: -rc) set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$(cd "$SCRIPT_DIR/.." && pwd)" HARBOR_REGISTRY="${HARBOR_REGISTRY:-registry.tarla.io}" HARBOR_PROJECT="${HARBOR_PROJECT:-iklimco}" HARBOR_CI_USER="${HARBOR_CI_USER:-robot-ci-push-iklimco}" TAG_SUFFIX="${TAG_SUFFIX:--rc}" log() { echo "[$(date +%H:%M:%S)] $*"; } die() { echo "[$(date +%H:%M:%S)] ERROR: $*" >&2; exit 1; } sep() { local title="$*" local line line=$(printf '─%.0s' {1..70}) echo echo "$line" printf ' %s\n' "$title" echo "$line" } [[ -z "${HARBOR_CI_TOKEN:-}" ]] && die "HARBOR_CI_TOKEN env var is required." [[ -f "health-agent/pyproject.toml" ]] || die "health-agent/pyproject.toml not found — run from Environment_Monitoring/ root." [[ -f "health-agent/Dockerfile" ]] || die "health-agent/Dockerfile not found." VERSION=$(sed -n 's/^version = "\(.*\)"/\1/p' health-agent/pyproject.toml) [[ -n "$VERSION" ]] || die "Could not determine version from health-agent/pyproject.toml" IMAGE="${HARBOR_REGISTRY}/${HARBOR_PROJECT}/health-agent:${VERSION}${TAG_SUFFIX}" sep "health-agent → ${IMAGE}" log "Logging in to ${HARBOR_REGISTRY} as ${HARBOR_CI_USER}" echo "$HARBOR_CI_TOKEN" | docker login "$HARBOR_REGISTRY" -u "$HARBOR_CI_USER" --password-stdin log "✔ Harbor login successful" log "Building..." docker build -t "$IMAGE" health-agent/ log "Pushing..." docker push "$IMAGE" docker pull -q "$IMAGE" DIGEST=$(docker image inspect "$IMAGE" --format '{{index .RepoDigests 0}}') log "✔ Pushed: ${IMAGE}" sep "Promotion Manifest — write to health-agent/deploy/prod.env on prod-env branch" echo echo " SOURCE_IMAGE_DIGEST=${DIGEST}" echo " PROD_IMAGE_TAG=${VERSION}" echo