#!/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}" 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 "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 backend (multi-arch) echo ">>> Building & pushing backend (amd64 + arm64)..." cd "$PROJECT_ROOT" docker buildx build \ --platform linux/amd64,linux/arm64 \ -t "$BACKEND" \ --push \ -f backend/Dockerfile backend/ # 5. Build + push frontend (multi-arch) echo ">>> Building & pushing frontend (amd64 + arm64)..." docker buildx build \ --platform linux/amd64,linux/arm64 \ -t "$FRONTEND" \ --push \ -f deploy/Dockerfile.frontend . echo "" echo "========================================" echo "Done! Both images pushed." echo "Backend: $BACKEND" echo "Frontend: $FRONTEND" echo "========================================"