#!/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}" BACKEND="${OCIR_REGION}.ocir.io/${OCIR_NAMESPACE}/${OCIR_REPO_PREFIX}-backend:${IMAGE_TAG}" FRONTEND="${OCIR_REGION}.ocir.io/${OCIR_NAMESPACE}/${OCIR_REPO_PREFIX}-frontend:${IMAGE_TAG}" echo "========================================" echo "OCI CIS Agent — Build & Push to OCIR" echo "========================================" echo "Unified: $UNIFIED" echo "Backend: $BACKEND" echo "Frontend: $FRONTEND" echo "" # 1. Build frontend React SPA echo ">>> Building frontend..." cd "$PROJECT_ROOT/frontend-react" 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 UNIFIED image (single container — nginx + backend) echo ">>> Building & pushing unified image (amd64 + arm64)..." cd "$PROJECT_ROOT" docker buildx build \ --platform linux/amd64,linux/arm64 \ -t "$UNIFIED" \ --push \ -f deploy/Dockerfile . echo "Unified image pushed." # 5. Build + push backend (multi-arch) — for docker-compose deployments echo ">>> Building & pushing backend (amd64 + arm64)..." docker buildx build \ --platform linux/amd64,linux/arm64 \ -t "$BACKEND" \ --push \ -f backend/Dockerfile backend/ echo "Backend image pushed." # 6. Build + push frontend (multi-arch) — for docker-compose deployments echo ">>> Building & pushing frontend (amd64 + arm64)..." docker buildx build \ --platform linux/amd64,linux/arm64 \ -t "$FRONTEND" \ --push \ -f deploy/Dockerfile.frontend . echo "Frontend image pushed." echo "" echo "========================================" echo "All 3 images pushed!" echo "Unified: $UNIFIED (single container)" echo "Backend: $BACKEND (docker-compose)" echo "Frontend: $FRONTEND (docker-compose)" echo "========================================"