# PR #43712 完整报告

- 仓库：`vllm-project/vllm`
- 标题：[CI] Separate non-root smoke tests from image build step
- 合并时间：2026-05-29 14:34
- 原文链接：http://prhub.com.cn/vllm-project/vllm/pull/43712

---

# 执行摘要

- 一句话：将非 root smoke 测试从镜像构建步骤中分离
- 推荐动作：建议快速合并。这是一个纯粹的 CI 改进，逻辑清晰，风险极低，能有效提升 CI 可见性和效率。

# 功能与动机

当 smoke 测试失败时，它们会显示为 600 分钟镜像构建步骤的失败，导致难以快速判断是构建本身失败还是构建后的验证失败。分离它们可以让构建和 smoke 测试失败在 Buildkite UI 中独立可见，并允许单独重试 smoke 测试而无需重新运行完整的镜像构建。

# 实现拆解

1. **创建独立的 smoke 测试步骤**：在 `.buildkite/image_build/image_build.yaml` 中，将原先嵌入 `image-build` 步骤的 `commands` 中的两个非 root smoke 测试命令（`docker run` 调用）提取出来，构成一个新的步骤，label 为 `:docker: :smoking: Non-root smoke tests`，key 为 `image-smoke-test`。

2. **调整依赖关系**：新的 smoke 测试步骤通过 `depends_on:
- image-build` 依赖于构建步骤。构建步骤本身保留 `key: image-build`，因此所有下游的约 30 个 `depends_on: image-build` 引用无需修改。注意第二个提交修复了 `depends_on` 格式问题，确保其符合 pipeline-generator 的 Pydantic Step 模型要求（必须为列表）。

3. **添加自动重试配置**：为构建步骤添加了 `retry` 配置，当 `exit_status` 为 -1 或 -10（agent 丢失）时自动重试最多 2 次，提高构建步骤的鲁棒性。

关键文件：
- `.buildkite/image_build/image_build.yaml`（模块 CI 配置；类别 config；类型 configuration）: 唯一变更文件，将 non-root smoke 测试从构建步骤中分离，并添加自动重试。

关键符号：未识别


# 评论区精华

在 Issue 评论中，Harry-Chen 指出 smoke 测试本身失败（deno 构建的 pipeline 中报 `docker: not found`），TheDuyIT 发现是由于 job 运行在没有 docker 的节点上，建议添加 `no_plugin: true` 或确保使用 docker 标签。PR 作者 khluu 确认问题并修复。

- 暂无高价值评论线程

# 风险与影响

- 风险：风险较低：仅修改了 CI 配置，不涉及任何源码或运行时逻辑。主要风险是新步骤能否正确获取 `$IMAGE_TAG` 环境变量，以及下游步骤是否仍能正确依赖于 `image-build`。PR 作者已确认依赖关系保持不变。
- 影响：对用户和系统无影响。对 CI 流程有正面影响：提高了构建和 smoke 测试失败的可诊断性，支持单独重试 smoke 测试，减少了排查和重试的时间成本。
- 风险标记：环境变量传递风险 , 依赖关系验证

# 关联脉络

- 暂无明显关联 PR