#!/bin/bash # 部署脚本 - 自动拉取、构建、PM2重载/启动 APP_NAME="accounts-manager-web" echo "==========================================" echo " 开始部署 $APP_NAME" echo "==========================================" # 1. 从远程仓库拉取最新代码 echo "📦 正在从远程仓库拉取最新代码..." git pull origin master if [ $? -ne 0 ]; then echo "❌ 拉取代码失败,请检查网络连接或仓库状态" exit 1 fi echo "✅ 代码拉取成功" # 2. 安装依赖并构建项目 echo "🔨 正在安装依赖并构建项目..." pnpm install if [ $? -ne 0 ]; then echo "❌ 安装依赖失败" exit 1 fi pnpm run build if [ $? -ne 0 ]; then echo "❌ 项目构建失败" exit 1 fi echo "✅ 项目构建成功" # 3. 检查PM2进程是否存在 echo "🔍 正在检查PM2进程状态..." PM2_STATUS=$(pm2 list | grep -c "$APP_NAME") if [ $PM2_STATUS -gt 0 ]; then # PM2进程存在,执行重载 echo "🔄 PM2进程已存在,正在重载应用..." pm2 reload $APP_NAME if [ $? -eq 0 ]; then echo "✅ PM2应用重载成功" else echo "❌ PM2应用重载失败" exit 1 fi else # PM2进程不存在,创建新进程 echo "🚀 PM2进程不存在,正在启动新应用..." pm2 start pnpm --name $APP_NAME -- run start:prod if [ $? -eq 0 ]; then echo "✅ PM2应用启动成功" else echo "❌ PM2应用启动失败" exit 1 fi fi # 4. 显示PM2状态 echo "📊 当前PM2状态:" pm2 list echo "==========================================" echo " 🎉 部署完成!" echo "=========================================="