001project_wildgrowth/backend/deploy/deploy-course-generation-re...

111 lines
3.5 KiB
Bash
Executable File
Raw Permalink 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
# ============================================
# 部署课程生成重构(支持三种模式)
# ============================================
# 使用方法:
# ssh root@120.55.112.195
# cd /var/www/wildgrowth-backend/backend && bash deploy/deploy-course-generation-refactor.sh
# ============================================
set -e
GIT_ROOT="/var/www/wildgrowth-backend"
APP_ROOT="/var/www/wildgrowth-backend/backend"
BRANCH=${1:-main}
echo "═══════════════════════════════════════════════════════════"
echo " 🚀 开始部署课程生成重构"
echo " 📦 部署分支: $BRANCH"
echo "═══════════════════════════════════════════════════════════"
echo ""
if [ ! -d "$APP_ROOT" ]; then
echo "❌ 错误: $APP_ROOT 不存在"
exit 1
fi
if [ ! -f "$APP_ROOT/.env" ]; then
echo "❌ 错误: $APP_ROOT/.env 不存在"
exit 1
fi
# 1. 拉取最新代码
echo "📥 步骤 1: 拉取最新代码..."
(cd "$GIT_ROOT" && git fetch origin)
(cd "$GIT_ROOT" && git checkout $BRANCH && git pull origin $BRANCH)
echo "✅ 代码已更新 (分支: $BRANCH)"
echo ""
# 2. 安装依赖
echo "📦 步骤 2: 安装依赖..."
(cd "$APP_ROOT" && npm install)
echo "✅ 依赖已安装"
echo ""
# 3. Prisma generate
echo "🔧 步骤 3: Prisma generate..."
(cd "$APP_ROOT" && npx prisma generate)
echo "✅ Prisma generate 完成"
echo ""
# 4. 数据库迁移
echo "🗄️ 步骤 4: 数据库迁移..."
MIGRATIONS="$APP_ROOT/prisma/migrations"
if [ -d "$MIGRATIONS" ]; then
for d in "$MIGRATIONS"/*/; do
[ -d "$d" ] || continue
if [ ! -f "${d}migration.sql" ]; then
echo " 删除残缺 migration 目录: $(basename "$d")"
rm -rf "$d"
fi
done
fi
(cd "$APP_ROOT" && npx prisma migrate deploy)
echo "✅ 数据库迁移完成"
echo ""
# 5. 迁移Prompt配置
echo "📝 步骤 5: 迁移Prompt配置..."
(cd "$APP_ROOT" && npx ts-node scripts/migrate-prompt-configs.ts)
echo "✅ Prompt配置迁移完成"
echo ""
# 6. 构建
echo "🔨 步骤 6: 构建项目..."
(cd "$APP_ROOT" && npm run build)
echo "✅ 项目已构建"
echo ""
# 7. 重启服务
echo "🔄 步骤 7: 重启服务..."
pm2 restart wildgrowth-api
echo "✅ 服务已重启"
echo ""
# 8. 健康检查
echo "🏥 步骤 8: 健康检查..."
sleep 3
if curl -sf http://localhost:3000/health > /dev/null; then
echo "✅ 健康检查通过"
(cd "$GIT_ROOT" && git rev-parse HEAD) > "$APP_ROOT/.deploy-last"
echo " (已记录到 .deploy-last供 rollback 使用)"
else
echo "❌ 健康检查失败: curl http://localhost:3000/health 未返回成功"
echo " 请检查: pm2 logs wildgrowth-api"
exit 1
fi
echo ""
# 9. 状态与日志
echo "📊 步骤 9: 服务状态"
pm2 status wildgrowth-api
echo "📝 最近日志:"
pm2 logs wildgrowth-api --lines 20 --nostream
echo ""
echo "═══════════════════════════════════════════════════════════"
echo " ✅ 部署完成!分支: $BRANCH"
echo "═══════════════════════════════════════════════════════════"
echo "💡 回滚: bash deploy/deploy-from-github.sh rollback"
echo ""