fix: README自动更新工作流并发推送竞争条件修复 — 添加concurrency组+rebase重试
Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/3f372f1a-add7-477e-a6f0-2c247da2a941 Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com>
This commit is contained in:
parent
590081c9ff
commit
d96389fcd0
|
|
@ -37,13 +37,19 @@ on:
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
|
|
||||||
|
# 防止并发运行:同一时间只允许一个实例,后触发的排队等待
|
||||||
|
concurrency:
|
||||||
|
group: readme-auto-update
|
||||||
|
cancel-in-progress: false
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
update-readme:
|
update-readme:
|
||||||
# 只在PR被合并时运行(不是关闭未合并),或push/手动触发
|
# 只在PR被合并时运行(不是关闭未合并),或push/手动触发
|
||||||
|
# push 事件排除 [skip ci] 提交(防止自身触发循环)
|
||||||
if: >
|
if: >
|
||||||
github.event_name == 'push' ||
|
|
||||||
github.event_name == 'workflow_dispatch' ||
|
github.event_name == 'workflow_dispatch' ||
|
||||||
(github.event_name == 'pull_request' && github.event.pull_request.merged == true)
|
(github.event_name == 'pull_request' && github.event.pull_request.merged == true) ||
|
||||||
|
(github.event_name == 'push' && !contains(github.event.head_commit.message, '[skip ci]'))
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
|
|
||||||
|
|
@ -101,8 +107,25 @@ jobs:
|
||||||
MSG="📡 README自动更新 · 手动触发 · $(TZ='Asia/Shanghai' date '+%Y-%m-%d %H:%M')"
|
MSG="📡 README自动更新 · 手动触发 · $(TZ='Asia/Shanghai' date '+%Y-%m-%d %H:%M')"
|
||||||
fi
|
fi
|
||||||
git commit -m "$MSG [skip ci]"
|
git commit -m "$MSG [skip ci]"
|
||||||
git push
|
|
||||||
echo "✅ README变更已提交并推送"
|
# 推送前拉取远程变更,最多重试3次
|
||||||
|
for i in 1 2 3; do
|
||||||
|
if ! git pull --rebase origin main; then
|
||||||
|
echo "⚠️ rebase 失败,尝试中止并重建提交..."
|
||||||
|
git rebase --abort 2>/dev/null || true
|
||||||
|
git pull --rebase origin main 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
if git push; then
|
||||||
|
echo "✅ README变更已提交并推送 (第${i}次尝试)"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [ "$i" -eq 3 ]; then
|
||||||
|
echo "⚠️ 推送失败3次,跳过本次更新(下次触发时会重试)"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo "⚠️ 推送失败,${i}秒后重试..."
|
||||||
|
sleep "$i"
|
||||||
|
done
|
||||||
else
|
else
|
||||||
echo "ℹ️ 无变更需要提交"
|
echo "ℹ️ 无变更需要提交"
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue