* chore(docs): set region to us-central1 in AGENT_RULEBOOK * chore(infra): set VERTEX_MODEL=gemini-2.5-pro in deploy scripts
64 lines
2.0 KiB
Bash
64 lines
2.0 KiB
Bash
#!/usr/bin/env bash
|
|
# 02-deploy.sh — Build and deploy orchestrator agent to Cloud Run
|
|
# Idempotent: updates existing service if present
|
|
# Source .env before running: source .env
|
|
set -euo pipefail
|
|
|
|
: "${PROJECT_ID:?Set PROJECT_ID}"
|
|
: "${REGION:?Set REGION}"
|
|
: "${AGENT_SA:?Set AGENT_SA}"
|
|
: "${ARTIFACT_REPO:?Set ARTIFACT_REPO}"
|
|
: "${CLOUD_RUN_SERVICE:?Set CLOUD_RUN_SERVICE}"
|
|
|
|
IMAGE="${REGION}-docker.pkg.dev/${PROJECT_ID}/${ARTIFACT_REPO}/${CLOUD_RUN_SERVICE}:latest"
|
|
|
|
echo "=== 02: Building and deploying ${CLOUD_RUN_SERVICE} ==="
|
|
|
|
bash "$(dirname "$0")/00-authcheck.sh"
|
|
|
|
# 1. Ensure Artifact Registry repo exists
|
|
if ! gcloud artifacts repositories describe "${ARTIFACT_REPO}" \
|
|
--location="${REGION}" --project="${PROJECT_ID}" >/dev/null 2>&1; then
|
|
gcloud artifacts repositories create "${ARTIFACT_REPO}" \
|
|
--repository-format=docker \
|
|
--location="${REGION}" \
|
|
--project="${PROJECT_ID}" --quiet
|
|
echo "✓ Artifact Registry repo created: ${ARTIFACT_REPO}"
|
|
fi
|
|
|
|
# 2. Configure Docker auth
|
|
gcloud auth configure-docker "${REGION}-docker.pkg.dev" --quiet
|
|
|
|
# 3. Build image via Cloud Build (no local Docker required)
|
|
gcloud builds submit agents/core-logic \
|
|
--tag="${IMAGE}" \
|
|
--project="${PROJECT_ID}" \
|
|
--quiet
|
|
echo "✓ Image built: ${IMAGE}"
|
|
|
|
# 4. Deploy to Cloud Run
|
|
gcloud run deploy "${CLOUD_RUN_SERVICE}" \
|
|
--image="${IMAGE}" \
|
|
--platform=managed \
|
|
--region="${REGION}" \
|
|
--service-account="${AGENT_SA}" \
|
|
--no-allow-unauthenticated \
|
|
--min-instances=1 \
|
|
--max-instances=10 \
|
|
--concurrency=80 \
|
|
--timeout=300s \
|
|
--memory=1Gi \
|
|
--cpu=1 \
|
|
--set-env-vars="PROJECT_ID=${PROJECT_ID},REGION=${REGION},VERTEX_MODEL=gemini-2.5-pro" \
|
|
--labels="env=prod,team=osvaucoe,agent=orchestrator" \
|
|
--quiet
|
|
|
|
SERVICE_URL=$(gcloud run services describe "${CLOUD_RUN_SERVICE}" \
|
|
--region="${REGION}" \
|
|
--format="value(status.url)")
|
|
|
|
echo ""
|
|
echo "=== 02: Deploy COMPLETE ==="
|
|
echo " Service URL: ${SERVICE_URL}"
|
|
echo " REMINDER: Run 03-teardown.sh at end of workday to stop billing."
|