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

111 lines
3.5 KiB
Bash
Raw Normal View History

2026-02-11 15:26:03 +08:00
#!/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 ""