82 lines
2.0 KiB
Bash
82 lines
2.0 KiB
Bash
#!/bin/bash
|
|
#===========================================================================
|
|
# RuoYi 自动部署脚本
|
|
# 触发方式: Gitee Webhook → webhook.py → deploy.sh
|
|
#===========================================================================
|
|
|
|
set -e
|
|
|
|
APP_DIR=/opt/ruoyi
|
|
JAR_FILE=$APP_DIR/ruoyi-admin/target/ruoyi-admin.jar
|
|
LOG_FILE=$APP_DIR/app.log
|
|
DEPLOY_LOG=$APP_DIR/deploy.log
|
|
PROFILE=druid
|
|
PORT=8080
|
|
|
|
log() {
|
|
echo "$(date '+%Y-%m-%d %H:%M:%S') [DEPLOY] $1" | tee -a "$DEPLOY_LOG"
|
|
}
|
|
|
|
log "========== 开始部署 =========="
|
|
|
|
# 1. 拉取最新代码
|
|
cd "$APP_DIR"
|
|
log "拉取最新代码..."
|
|
git pull origin master 2>&1 | tee -a "$DEPLOY_LOG"
|
|
|
|
# 2. Maven 构建
|
|
log "开始 Maven 构建..."
|
|
mvn clean package -DskipTests -pl ruoyi-admin -am -q 2>&1 | tee -a "$DEPLOY_LOG"
|
|
|
|
if [ ! -f "$JAR_FILE" ]; then
|
|
log "构建失败: JAR 文件不存在"
|
|
exit 1
|
|
fi
|
|
|
|
log "构建成功"
|
|
|
|
# 3. 停止旧进程
|
|
OLD_PID=$(ps aux | grep ruoyi-admin.jar | grep -v grep | awk '{print $2}')
|
|
if [ -n "$OLD_PID" ]; then
|
|
log "停止旧进程 PID: $OLD_PID"
|
|
kill "$OLD_PID"
|
|
sleep 3
|
|
if ps -p "$OLD_PID" > /dev/null 2>&1; then
|
|
kill -9 "$OLD_PID"
|
|
log "强制停止 PID: $OLD_PID"
|
|
fi
|
|
fi
|
|
|
|
# 4. 启动新进程
|
|
log "启动新进程..."
|
|
nohup java -Xms128m -Xmx384m -jar "$JAR_FILE" \
|
|
--spring.profiles.active="$PROFILE" \
|
|
--server.port="$PORT" \
|
|
> "$LOG_FILE" 2>&1 &
|
|
|
|
NEW_PID=$!
|
|
log "新进程 PID: $NEW_PID"
|
|
|
|
# 5. 等待启动
|
|
sleep 5
|
|
if ps -p "$NEW_PID" > /dev/null 2>&1; then
|
|
log "应用启动中,等待就绪..."
|
|
for i in 1 2 3 4 5 6; do
|
|
if grep -q "Started RuoYiApplication" "$LOG_FILE" 2>/dev/null; then
|
|
log "部署成功! 应用已就绪"
|
|
break
|
|
fi
|
|
sleep 5
|
|
done
|
|
else
|
|
log "启动失败! 查看日志: tail -50 $LOG_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
# 6. 健康检查
|
|
sleep 3
|
|
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:$PORT 2>/dev/null || echo "000")
|
|
log "健康检查 HTTP $HTTP_CODE"
|
|
|
|
log "========== 部署结束 =========="
|