feat: EwoooC 初始化 — 完整專案推版至 Gitea
Some checks failed
CD Pipeline / deploy (push) Failing after 59s

- 建立 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>
This commit is contained in:
ogt
2026-04-19 01:21:13 +08:00
commit 1b4f3a7bbe
504 changed files with 387725 additions and 0 deletions

108
deploy_scripts/deploy_cloudrun.sh Executable file
View File

@@ -0,0 +1,108 @@
#!/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 ""