This commit is contained in:
mzl
2026-01-09 16:53:04 +08:00
parent 83472e3af1
commit 37bbd82563
3 changed files with 561 additions and 0 deletions
+91
View File
@@ -0,0 +1,91 @@
#!/bin/bash
# 服务端自动拉取并重启服务脚本
# 使用方法:将此脚本设置为 cron 任务或手动执行
set -e
# 配置项
PROJECT_DIR="/path/to/your/xhs_cloud_stable_v2" # 修改为实际的服务器路径
GIT_REPO="your-git-repo-url" # 修改为实际的 Git 仓库地址
LOG_FILE="$PROJECT_DIR/logs/auto_pull.log"
# 创建日志目录
mkdir -p "$(dirname "$LOG_FILE")"
# 日志函数
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
log "========== 开始检查更新 =========="
cd "$PROJECT_DIR" || {
log "错误:无法进入项目目录 $PROJECT_DIR"
exit 1
}
# 检查是否为 Git 仓库
if [ ! -d ".git" ]; then
log "警告:当前目录不是 Git 仓库,尝试克隆..."
git clone "$GIT_REPO" "$PROJECT_DIR" || {
log "错误:Git 克隆失败"
exit 1
}
fi
# 获取当前分支名
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
log "当前分支:$CURRENT_BRANCH"
# 拉取最新代码
log "执行 git fetch..."
git fetch origin
# 检查是否有新提交
LOCAL=$(git rev-parse HEAD)
REMOTE=$(git rev-parse origin/"$CURRENT_BRANCH")
if [ "$LOCAL" != "$REMOTE" ]; then
log "发现新更新,开始拉取..."
# 拉取代码
git pull origin "$CURRENT_BRANCH" || {
log "错误:Git pull 失败"
exit 1
}
log "代码更新成功!"
# 检查是否有 requirements.txt 变化
if git diff HEAD@{1} HEAD --name-only | grep -q "requirements.txt"; then
log "检测到 requirements.txt 变化,更新依赖..."
pip install -r requirements.txt >> "$LOG_FILE" 2>&1 || {
log "警告:依赖安装失败,请手动检查"
}
fi
# 重启服务(根据实际部署方式调整)
log "重启服务..."
# 方式1:使用 docker-compose
if [ -f "docker-compose.yml" ]; then
docker-compose down
docker-compose up -d
log "Docker 服务已重启"
fi
# 方式2:使用 systemd 服务
# systemctl restart xhs-crawler
# log "Systemd 服务已重启"
# 方式3:使用 supervisor
# supervisorctl restart xhs-crawler
# log "Supervisor 服务已重启"
log "========== 更新完成 =========="
else
log "没有新更新,无需操作"
fi
log "========== 检查结束 =========="
echo ""