现象:刚 push 完立刻查 tags API,latest 已是新 digest 而 v0.1 还是旧值,
脚本按"三个 tag 不一致 = 并发覆盖"直接 exit 1,把正常发布拦下来了。
根因:Docker Hub 的 /v2/repositories/<repo>/tags/<tag> 有秒级~十几秒的
传播延迟,单次查询不能作为判据。
修复:轮询最多 12 次、每次间隔 5 秒(共 60 秒),三者一致才继续;
超时仍不一致则 exit 1,并在报错里区分两种可能:
- latest 与 v0.1 不同 → 疑似并发构建覆盖(提示检查 flock 是否被绕过)
- 仍为 "?" → 推送根本没成功或仓库不可达
本次实测:第 1 次轮询发现未同步,等待 5 秒后三者均为 1ce3d4166506 ✅
顺带:不可变 tag 之前出现 -dirty 后缀,是因为改完脚本没提交就发版;
本次先提交再发版,tag 恢复干净(2.0.0-20261031-<sha>)。