Prhub

#38415 [ROCm][CI] Fix UV install in Dockerfile.rocm to detect curl failures and retry

原始 PR 作者 AndreasKaratzas 合并时间 2026-03-29 00:47 文件变更 1 提交数 1 评论 6 代码增减 +5 / -2

执行摘要

修复 ROCm Dockerfile 中 UV 安装的静默失败,添加重试机制提高 CI 可靠性。

PR body 明确指出:'Fix silent UV installation failure in Dockerfile.rocm that causes uv: not found in the build_rixl stage. The curl ... | sh pipe masks curl failures. When curl times out, sh reads empty stdin and exits 0, so Docker reports the step as successful.' 因此,需要修复此静默失败问题,以确保 UV 在构建过程中正确安装。

建议负责 CI 基础设施的工程师快速浏览此 PR,以了解 Dockerfile 中处理网络下载的最佳实践。对于普通开发者,可作为简单 bugfix 示例参考,但无需深入解析。

讨论亮点

在 Issue 评论中,主要讨论了超时问题是否普遍:tjtanaa 询问 'is this timeout a common problem, or it is only happening recently? Because for CPU, XPU, Cuda, their docker image is also executing the same steps.' AndreasKaratzas 回应说 'I know. I saw that this is the case for others too. My guess is slow network.' 这揭示了类似问题可能存在于其他 Dockerfile 中,但本 PR 仅聚焦于 ROCm 修复,未扩展讨论统一解决方案。Review 中自动 bot 评论无实质内容,khluu 和 tjtanaa 简单批准,无争议。

实现拆解

修改了 docker/Dockerfile.rocm 文件中的 UV 安装命令:

  • 将原单行命令 'curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR="/usr/local/bin" sh' 拆分为多步:先下载脚本到临时文件 /tmp/uv-install.sh。
  • 添加 '--retry 3 --retry-delay 5' 参数到 curl,以处理瞬态网络失败如 SSL 超时。
  • 运行下载的脚本并设置环境变量 UV_INSTALL_DIR。
  • 清理临时文件并用 'uv --version' 验证安装成功,确保步骤失败时能被 Docker 捕获。
文件 模块 状态 重要度
docker/Dockerfile.rocm ci/docker modified 3.0

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

超时问题是否普遍以及是否应统一修复 question

tjtanaa 询问超时是否是常见问题,并提到 CPU、XPU、Cuda 的 Dockerfile 也有相同步骤,暗示可能需要跨所有构建修复。AndreasKaratzas 回应说可能是网络慢,并知道其他文件有类似问题,但 PR 仅针对 ROCm。

结论:讨论确认了问题可能普遍存在,但 PR 仅修复 ROCm,未决定是否扩展到其他 Dockerfile。 · partially_resolved

风险与影响

风险较低,主要包括:

  • 脚本更改可能引入语法错误,但通过验证步骤 'uv --version' 可降低风险。
  • 临时文件清理失败(如权限问题),但使用 'rm -f' 在同一 RUN 命令中执行可确保清理。
  • 重试机制可能掩盖非网络失败(如脚本内容错误),但这是已知权衡,针对网络超时问题。
  • 依赖外部网络下载,可能受服务器可用性影响,添加重试可缓解。

直接影响 ROCm CI 构建的可靠性,减少因网络问题导致的 uv 安装失败和静默成功问题。对于系统,提高了构建成功率和可调试性,缩短 CI 故障排查时间。对团队而言,变更简单易懂,易于维护;但对其他 Dockerfile(如 CPU、XPU、Cuda)的潜在类似问题未处理,可能需后续关注。

网络依赖问题 脚本执行风险

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论