111 lines
3.5 KiB
Bash
Executable File
111 lines
3.5 KiB
Bash
Executable File
#!/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 ""
|