#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" OCIR_REGION="${OCIR_REGION:?Set OCIR_REGION (e.g., us-ashburn-1)}" OCIR_NAMESPACE="${OCIR_NAMESPACE:?Set OCIR_NAMESPACE}" OCIR_REPO_PREFIX="${OCIR_REPO_PREFIX:-oci-cis-agent}" IMAGE_TAG="${IMAGE_TAG:-latest}" UNIFIED="${OCIR_REGION}.ocir.io/${OCIR_NAMESPACE}/${OCIR_REPO_PREFIX}:${IMAGE_TAG}" echo "========================================" echo "OCI CIS Agent — Build & Push to OCIR" echo "========================================" echo "Image: $UNIFIED" echo "" # 1. Build frontend React SPA echo ">>> Building frontend..." cd "$PROJECT_ROOT/frontend" npm ci --silent npm run build echo "Frontend build OK." # 2. Ensure buildx builder exists docker buildx inspect multiarch >/dev/null 2>&1 || \ docker buildx create --name multiarch --use docker buildx use multiarch # 3. Login to OCIR echo ">>> Logging in to OCIR..." docker login "${OCIR_REGION}.ocir.io" # 4. Build + push single container image (multi-arch) echo ">>> Building & pushing image (amd64 + arm64)..." cd "$PROJECT_ROOT" docker buildx build \ --platform linux/amd64,linux/arm64 \ -t "$UNIFIED" \ --push \ -f infra/docker/Dockerfile.single . echo "Image pushed." echo "" echo "========================================" echo "Done! $UNIFIED" echo "========================================"