#!/bin/bash
# MCP Internal 部署腳本
# 用於手動部署到 Cloud Run
set -e
# 設定變數
PROJECT_ID="${GCP_PROJECT_ID:-yes-ceramics-mcp-hub}"
REGION="asia-east1"
SERVICE_NAME="mcp-internal-backend"
REPO_NAME="mcp-internal"
echo "================================================"
echo "MCP Internal Backend 部署"
echo "Project: $PROJECT_ID"
echo "Region: $REGION"
echo "Service: $SERVICE_NAME"
echo "================================================"
# 確認專案
gcloud config set project $PROJECT_ID
# 建立 Artifact Registry (如果不存在)
echo "檢查 Artifact Registry..."
if ! gcloud artifacts repositories describe $REPO_NAME --location=$REGION &>/dev/null; then
echo "建立 Artifact Registry..."
gcloud artifacts repositories create $REPO_NAME \
--repository-format=docker \
--location=$REGION \
--description="MCP Internal Docker images"
fi
# 建置 Docker 映像
echo "建置 Docker 映像..."
IMAGE_TAG="$REGION-docker.pkg.dev/$PROJECT_ID/$REPO_NAME/cloud-backend:$(date +%Y%m%d%H%M%S)"
IMAGE_LATEST="$REGION-docker.pkg.dev/$PROJECT_ID/$REPO_NAME/cloud-backend:latest"
# 從專案根目錄建置
cd "$(dirname "$0")/.."
docker build -t $IMAGE_TAG -t $IMAGE_LATEST -f packages/cloud-backend/Dockerfile .
# 推送映像
echo "推送映像到 Artifact Registry..."
docker push $IMAGE_TAG
docker push $IMAGE_LATEST
# 部署到 Cloud Run
echo "部署到 Cloud Run..."
gcloud run deploy $SERVICE_NAME \
--image $IMAGE_TAG \
--region $REGION \
--platform managed \
--allow-unauthenticated \
--set-env-vars "GCP_PROJECT_ID=$PROJECT_ID,NODE_ENV=production,LOG_LEVEL=info" \
--set-secrets "FXCRM_APP_ID=FXCRM_APP_ID:latest,FXCRM_APP_SECRET=FXCRM_APP_SECRET:latest,FXCRM_PERMANENT_CODE=FXCRM_PERMANENT_CODE:latest,FXCRM_CORP_ID=FXCRM_CORP_ID:latest,FXCRM_DEFAULT_USER_ID=FXCRM_DEFAULT_USER_ID:latest,ODOO_URL=ODOO_URL:latest,ODOO_DB=ODOO_DB:latest,ODOO_API_KEY=ODOO_API_KEY:latest,ODOO_USER_ID=ODOO_USER_ID:latest,SHOPIFY_STORE=SHOPIFY_STORE:latest,SHOPIFY_ACCESS_TOKEN=SHOPIFY_ACCESS_TOKEN:latest,GITHUB_TOKEN=GITHUB_TOKEN:latest,GITHUB_OWNER=GITHUB_OWNER:latest" \
--memory 512Mi \
--cpu 1 \
--concurrency 80 \
--min-instances 0 \
--max-instances 10
# 取得服務 URL
echo ""
echo "================================================"
echo "部署完成!"
echo ""
SERVICE_URL=$(gcloud run services describe $SERVICE_NAME --region=$REGION --format='value(status.url)')
echo "Service URL: $SERVICE_URL"
echo ""
echo "健康檢查:"
echo " curl $SERVICE_URL/health"
echo ""
echo "================================================"