diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index 1dbc55d..24730e3 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -26,37 +26,25 @@ jobs: echo -e "\n===== 停止并清理 Docker =====" echo $SUDO_PASSWORD | sudo -S docker compose down - # 3. 拉取 Git 最新代码 - echo -e "\n===== 拉取 Git 代码 =====" - REPO_URL="https://sdd:zsj981107@gitea.tangledup-ai.com/quant-speed-AI/Scoring-System.git" - if [ ! -d ".git" ]; then - echo "不是 git 仓库,尝试 clone(最多重试3次)..." - # 先清理可能残留的 .git - rm -rf .git - for i in 1 2 3; do - echo "第 $i 次尝试 clone..." - git clone --depth=1 $REPO_URL /tmp/scoring-system-clone && break - echo "clone 失败,等待5秒后重试..." - sleep 5 - done - if [ -d "/tmp/scoring-system-clone/.git" ]; then - cp -r /tmp/scoring-system-clone/. . - rm -rf /tmp/scoring-system-clone - echo "clone 成功" - else - echo "错误:clone 失败,终止部署" - rm -rf /tmp/scoring-system-clone - exit 1 - fi - else - git remote set-url origin $REPO_URL - if ! git pull; then - echo "警告:Git pull 失败,尝试强制同步远程代码..." - git fetch --all - CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) - git reset --hard origin/$CURRENT_BRANCH - fi + # 3. 拉取最新代码(用 curl 下载压缩包,避免 git 网络不稳定) + echo -e "\n===== 拉取最新代码 =====" + ARCHIVE_URL="https://sdd:zsj981107@gitea.tangledup-ai.com/quant-speed-AI/Scoring-System/archive/main.tar.gz" + for i in 1 2 3; do + echo "第 $i 次尝试下载代码包..." + curl -L --retry 3 --retry-delay 3 -o /tmp/scoring.tar.gz "$ARCHIVE_URL" && break + echo "下载失败,等待5秒后重试..." + sleep 5 + done + if [ ! -f /tmp/scoring.tar.gz ]; then + echo "错误:代码下载失败,终止部署" + exit 1 fi + echo "解压代码..." + tar -xzf /tmp/scoring.tar.gz -C /tmp/ + # gitea 解压出来的目录名是 Scoring-System + rsync -av --exclude='.env' --exclude='media/' /tmp/Scoring-System/ $TARGET_DIR/ + rm -rf /tmp/scoring.tar.gz /tmp/Scoring-System + echo "代码更新完成" # 4. 创建/更新 .env 文件 echo -e "\n===== 配置环境变量 ====="