fix: docker buildx build 加 25 分钟超时防止无限挂起 #1420
Reference in New Issue
Block a user
Delete Branch "fix/docker-build-timeout"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题
Run #32849 的 Build Staging API Image 卡了 8+ 小时,docker buildx build 没有超时控制,pip install / apt-get 卡住时无限等待。
修复
【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
无
💡 改进建议(不阻塞合并)
[scripts/ci/docker_build_push.sh: 6] 支持通过环境变量覆盖超时时间
BUILD_TIMEOUT=1500,这会覆盖外部传入的同名环境变量。建议使用默认值赋值语法: ${BUILD_TIMEOUT:=1500}或BUILD_TIMEOUT=${BUILD_TIMEOUT:-1500},以便允许在特殊场景下通过环境变量调整超时时间,而无需修改脚本。[scripts/ci/docker_build_push.sh: 49, 66] 变量引用建议加双引号
BUILD_TIMEOUT和exit_code在当前逻辑中必定是数字,不存在分词或通配符风险,但遵循 ShellCheck 最佳实践,建议将变量引用改为双引号包裹形式,如"${BUILD_TIMEOUT}"和"$exit_code",以增强脚本的健壮性。✅ 良好实践
docker buildx build这种可能长时间挂起的操作添加timeout命令是很好的防御性编程实践,有效避免 CI 资源浪费。timeout命令特有的退出码 124,并将其作为特定错误处理,避免与构建本身的错误混淆,逻辑清晰。🤖 由 AI 代码审查机器人自动生成 | 2026-08-18 05:39:29 | 模型:
🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
🗑️ 预览环境已清理
PR #1420 已关闭或合并,对应的预览环境已被清理。