宝塔webHook自动拉取代码脚本

#!/bin/bash
echo ""
echo "=========================================="
echo "$(date '+%Y-%m-%d %H:%M:%S') 开始部署"
echo "=========================================="

# 定义日志文件
LOG_FILE="/tmp/deploy_financial.log"
echo "日志文件: $LOG_FILE" | tee -a $LOG_FILE

# 记录执行用户
echo "当前用户: $(whoami)" | tee -a $LOG_FILE
echo "当前目录: $(pwd)" | tee -a $LOG_FILE

# 进入项目目录
TARGET_DIR="/www/wwwroot/api.sg199.net"
echo "切换到目录: $TARGET_DIR" | tee -a $LOG_FILE

if [ ! -d "$TARGET_DIR" ]; then
    echo "错误: 目录不存在 $TARGET_DIR" | tee -a $LOG_FILE
    exit 1
fi

cd "$TARGET_DIR"
echo "当前目录: $(pwd)" | tee -a $LOG_FILE

# 检查git状态
echo "=== Git 状态 ===" | tee -a $LOG_FILE
git status | tee -a $LOG_FILE

echo "=== 远程仓库 ===" | tee -a $LOG_FILE
git remote -v | tee -a $LOG_FILE

echo "=== 开始拉取代码 ===" | tee -a $LOG_FILE
# 拉取代码,捕获详细输出
GIT_OUTPUT=$(git pull origin main 2>&1)
GIT_EXIT_CODE=$?

echo "Git 退出码: $GIT_EXIT_CODE" | tee -a $LOG_FILE
echo "Git 输出: $GIT_OUTPUT" | tee -a $LOG_FILE

if [ $GIT_EXIT_CODE -eq 0 ]; then
    echo "✅ Git 拉取成功" | tee -a $LOG_FILE
else
    echo "❌ Git 拉取失败" | tee -a $LOG_FILE
    echo "尝试使用强制拉取..." | tee -a $LOG_FILE
    
    # 尝试重置和强制拉取
    git fetch --all | tee -a $LOG_FILE
    git reset --hard origin/main | tee -a $LOG_FILE
    git pull origin main | tee -a $LOG_FILE
fi

# 检查文件变化
echo "=== 文件变更 ===" | tee -a $LOG_FILE
git diff --name-only HEAD~1 HEAD | tee -a $LOG_FILE


echo "=========================================="
echo "$(date '+%Y-%m-%d %H:%M:%S') 部署完成"
echo "==========================================" | tee -a $LOG_FILE

# 检查PHP环境
if [ -f "composer.json" ]; then
    echo "检测到 composer.json" | tee -a $LOG_FILE
    composer -V | tee -a $LOG_FILE
fi

 

posted @ 2026-01-28 10:33  dreamboycx  阅读(0)  评论(0)    收藏  举报