diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index 5023175..7d3b1ce 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -23,21 +23,24 @@ jobs: exit 1 } - # 2. 停止并移除 Docker 容器 - echo -e "\n===== 停止 Docker 容器 =====" - echo $SUDO_PASSWORD | sudo -S docker compose down - - # 3. 删除 Docker 镜像 - echo -e "\n===== 删除 Docker 镜像 =====" + # 2. 停止并移除 Docker 容器及镜像 + echo -e "\n===== 停止并清理 Docker =====" + # 合并停止容器和删除镜像的操作,避免重复执行导致"already in progress"错误 echo $SUDO_PASSWORD | sudo -S docker compose down --rmi all - # 4. 拉取 Git 最新代码 + # 3. 拉取 Git 最新代码 echo -e "\n===== 拉取 Git 代码 =====" - git pull || { - echo "警告:Git pull 失败(可能是本地有未提交的修改),脚本继续执行..." - } + # 尝试拉取,如果失败则强制重置,增强鲁棒性 + if ! git pull; then + echo "警告:Git pull 失败,尝试强制同步远程代码..." + git fetch --all + # 获取当前分支名并重置 + CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) + git reset --hard origin/$CURRENT_BRANCH + git pull + fi - # 5. 重新启动 Docker 容器 + # 4. 重新启动 Docker 容器 echo -e "\n===== 启动 Docker 容器 =====" echo $SUDO_PASSWORD | sudo -S docker compose up -d