#!/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