#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)" cd "${ROOT_DIR}" PROJECT_ID="propane-will-491900-m5" REGION="us-central1" REPOSITORY="us-central1-docker.pkg.dev/${PROJECT_ID}/osvauco-repo" MCP_SERVICE="opax-mcp" MCP_IMAGE="${REPOSITORY}/opax-mcp" # Emma runtime requires Direct VPC egress to the internal Ollama host. # Keep this explicit: a prior manual deployment lost these settings. MCP_NETWORK="default" MCP_SUBNET="default" MCP_VPC_EGRESS="private-ranges-only" MCP_OLLAMA_BASE_URL="http://10.128.0.15:11434" echo "==> Submitting MCP Cloud Build" BUILD_ID="$( gcloud builds submit \ --async \ --project="${PROJECT_ID}" \ --region="${REGION}" \ --config="cloudbuild.build-only.yaml" \ --format="value(id)" \ . )" if [[ -z "${BUILD_ID}" ]]; then echo "ERROR: Cloud Build did not return a build ID." >&2 exit 1 fi echo "==> Cloud Build ID: ${BUILD_ID}" echo "==> Streaming Cloud Build logs" set +e gcloud builds log "${BUILD_ID}" \ --project="${PROJECT_ID}" \ --region="${REGION}" \ --stream BUILD_LOG_EXIT_CODE=$? set -e BUILD_STATUS="$( gcloud builds describe "${BUILD_ID}" \ --project="${PROJECT_ID}" \ --region="${REGION}" \ --format="value(status)" )" IMAGE_REF="$( gcloud builds describe "${BUILD_ID}" \ --project="${PROJECT_ID}" \ --region="${REGION}" \ --format="value(results.images[0].name)" )" if [[ -z "${IMAGE_REF}" ]]; then IMAGE_REF="${MCP_IMAGE}:${BUILD_ID}" fi if [[ "${IMAGE_REF}" == *@sha256:* ]]; then DEPLOY_IMAGE="${IMAGE_REF}" else IMAGE_DIGEST="$( gcloud artifacts docker images describe "${IMAGE_REF}" \ --project="${PROJECT_ID}" \ --format="value(image_summary.digest)" )" if [[ -z "${IMAGE_DIGEST}" ]]; then echo "ERROR: No pushed MCP image digest was found." >&2 echo "Cloud Build status: ${BUILD_STATUS}" >&2 echo "Cloud Build log exit code: ${BUILD_LOG_EXIT_CODE}" >&2 exit 1 fi DEPLOY_IMAGE="${MCP_IMAGE}@${IMAGE_DIGEST}" fi echo "==> Cloud Build status: ${BUILD_STATUS}" echo "==> Deploying immutable MCP image:" echo "${DEPLOY_IMAGE}" gcloud run deploy "${MCP_SERVICE}" \ --project="${PROJECT_ID}" \ --region="${REGION}" \ --image="${DEPLOY_IMAGE}" \ --network="${MCP_NETWORK}" \ --subnet="${MCP_SUBNET}" \ --vpc-egress="${MCP_VPC_EGRESS}" \ --update-env-vars="OLLAMA_BASE_URL=${MCP_OLLAMA_BASE_URL}" \ --quiet echo echo "==> Active MCP deployment" gcloud run services describe "${MCP_SERVICE}" \ --project="${PROJECT_ID}" \ --region="${REGION}" \ --format="table( metadata.name, status.url, status.latestReadyRevisionName, status.traffic[0].revisionName, spec.template.spec.containers[0].image )" echo echo "MCP deployment complete." echo "Cloud Build log exit code: ${BUILD_LOG_EXIT_CODE}"