66 lines
1.7 KiB
Bash
66 lines
1.7 KiB
Bash
#!/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 "==========================================" |