#!/bin/bash # ============================================ # 宝塔 Webhook 自动部署脚本 - Monisuo # ============================================ # 配置项 - 请根据实际情况修改 PROJECT_PATH="/opt/monisuo" # 项目部署路径 GIT_REPO="http://sion:woshisaw.@8.155.172.147:3001/sion/monisuo.git" # Git仓库地址 JAR_NAME="monisuo-1.0.jar" # JAR包名称 LOG_FILE="/opt/monisuo/deploy.log" # 部署日志文件 # 记录日志函数 log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE } log "========== 开始部署 ==========" # 进入项目目录 cd $PROJECT_PATH || { log "错误: 无法进入目录 $PROJECT_PATH" exit 1 } # 拉取最新代码 log "正在拉取最新代码..." git pull origin main >> $LOG_FILE 2>&1 if [ $? -ne 0 ]; then log "错误: Git pull 失败" exit 1 fi log "代码拉取成功" # 检查是否有更新 CHANGED=$(git diff --name-only HEAD~1 HEAD) log "变更文件: $CHANGED" # 如果有Java代码变更,重新打包 if echo "$CHANGED" | grep -q "src/"; then log "检测到Java代码变更,开始重新打包..." # Maven打包 mvn clean package -DskipTests >> $LOG_FILE 2>&1 if [ $? -ne 0 ]; then log "错误: Maven打包失败" exit 1 fi log "Maven打包成功" fi # 重启后端服务 log "正在重启后端服务..." # 停止旧服务 pkill -f $JAR_NAME sleep 2 # 启动新服务 nohup java -jar $PROJECT_PATH/target/$JAR_NAME --spring.profiles.active=dev > $PROJECT_PATH/app.log 2>&1 & if [ $? -eq 0 ]; then log "后端服务启动成功" else log "错误: 后端服务启动失败" exit 1 fi # 检查服务是否启动成功 sleep 5 if pgrep -f $JAR_NAME > /dev/null; then log "服务运行正常" else log "错误: 服务启动后未运行" exit 1 fi log "========== 部署完成 ==========" echo "Deploy Success!"