Files
ewoooc/deploy_scripts/deploy_cloudrun.sh
ogt 1b4f3a7bbe
Some checks failed
CD Pipeline / deploy (push) Failing after 59s
feat: EwoooC 初始化 — 完整專案推版至 Gitea
- 建立 Gitea Actions CD pipeline (.gitea/workflows/cd.yaml)
- 部署模式: rsync Python 檔案至 188 → docker restart (volume mount)
- Dockerfile/requirements 變動時自動重建 Docker image
- 部署通知: Telegram (開始/成功/失敗)
- 健康檢查: https://mo.wooo.work/health (最多 5 次重試)
- 同步最新 CLAUDE.md / ADR-008 / memory (2026-04-19)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 01:21:13 +08:00

109 lines
3.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# deploy_cloudrun.sh - 一鍵部署到 Google Cloud Run
set -e
echo "=========================================="
echo "部署 Momo Pro System 到 Cloud Run"
echo "=========================================="
# 檢查是否已登入 gcloud
if ! gcloud auth list --filter=status:ACTIVE --format="value(account)" | grep -q .; then
echo "❌ 請先登入 gcloud"
echo " gcloud auth login"
exit 1
fi
# 取得或設定專案 ID
PROJECT_ID=$(gcloud config get-value project 2>/dev/null)
if [ -z "$PROJECT_ID" ]; then
read -p "請輸入 GCP 專案 ID: " PROJECT_ID
gcloud config set project $PROJECT_ID
fi
echo "📋 使用專案: $PROJECT_ID"
# 設定區域
REGION="asia-east1"
SERVICE_NAME="momo-pro-system"
# 詢問是否需要設定環境變數
echo ""
read -p "是否需要設定環境變數?(y/n): " SETUP_ENV
if [ "$SETUP_ENV" = "y" ]; then
echo ""
echo "請輸入環境變數(留空跳過):"
read -p "EMAIL_USER: " EMAIL_USER
read -sp "EMAIL_PASSWORD: " EMAIL_PASSWORD
echo ""
read -p "SMTP_SERVER (預設: smtp.gmail.com): " SMTP_SERVER
SMTP_SERVER=${SMTP_SERVER:-smtp.gmail.com}
read -p "SMTP_PORT (預設: 587): " SMTP_PORT
SMTP_PORT=${SMTP_PORT:-587}
fi
# 啟用必要的 API
echo ""
echo "📡 啟用必要的 GCP API..."
gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com
# 部署到 Cloud Run直接從原始碼建立
echo ""
echo "🚀 部署到 Cloud Run..."
echo " 這可能需要幾分鐘時間..."
DEPLOY_CMD="gcloud run deploy $SERVICE_NAME \
--source . \
--region=$REGION \
--allow-unauthenticated \
--port=5000 \
--memory=2Gi \
--cpu=2 \
--min-instances=0 \
--max-instances=10 \
--timeout=300"
# 添加環境變數
if [ "$SETUP_ENV" = "y" ] && [ ! -z "$EMAIL_USER" ]; then
DEPLOY_CMD="$DEPLOY_CMD --set-env-vars=EMAIL_USER=$EMAIL_USER,SMTP_SERVER=$SMTP_SERVER,SMTP_PORT=$SMTP_PORT"
# 處理密碼(使用 Secret Manager
if [ ! -z "$EMAIL_PASSWORD" ]; then
echo "🔐 設定 Email 密碼到 Secret Manager..."
echo -n "$EMAIL_PASSWORD" | gcloud secrets create email-password --data-file=- || \
echo -n "$EMAIL_PASSWORD" | gcloud secrets versions add email-password --data-file=-
DEPLOY_CMD="$DEPLOY_CMD --set-secrets=EMAIL_PASSWORD=email-password:latest"
fi
fi
# 執行部署
eval $DEPLOY_CMD
# 取得服務 URL
SERVICE_URL=$(gcloud run services describe $SERVICE_NAME \
--region=$REGION \
--format='value(status.url)')
echo ""
echo "=========================================="
echo "✅ 部署成功!"
echo "=========================================="
echo ""
echo "🌐 服務 URL: $SERVICE_URL"
echo ""
echo "📊 查看日誌:"
echo " gcloud logging read \"resource.type=cloud_run_revision AND resource.labels.service_name=$SERVICE_NAME\" --limit=50"
echo ""
echo "🔄 更新服務:"
echo " ./deploy_scripts/deploy_cloudrun.sh"
echo ""
echo "❌ 刪除服務:"
echo " gcloud run services delete $SERVICE_NAME --region=$REGION"
echo ""
echo "💰 查看費用:"
echo " https://console.cloud.google.com/billing"
echo ""