ts
This commit is contained in:
@@ -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 ""
|
||||
Reference in New Issue
Block a user