Prhub

#53949 [Rocm][CI] add dockerfile.xpu to rocm ci artifact

原始 PR 作者 charlifu 合并时间 2026-08-27 16:06 文件变更 1 提交数 2 评论 4 代码增减 +6 / -1

执行摘要

修复 ROCm CI 中 Dockerfile.xpu 缺失导致的测试失败

PR 描述中指出,tools/test_docker_build_metadata_args.py::test_rust_build_cache_excludes_git_metadata 测试需要 dockerfile.xpu 文件,但在 ROCm CI 环境中该文件可能不存在(或不被支持),导致测试失败。通过条件判断,让 ROCm 平台跳过该文件的校验,从而修复 CI。

该 PR 改动简单,逻辑合理,建议合并。但可考虑未来将平台相关文件列表提炼为测试辅助函数,便于维护。整体不值得精读,但可作为理解平台特性测试的示例。

讨论亮点

未发现实质性的 review 讨论,仅有 CI 触发和 Claude 自动审查提示。维护者 AndreasKaratzas 直接批准了 PR。

实现拆解

变更集中在测试文件 tests/tools/test_docker_build_metadata_args.py,具体步骤如下:

  1. 在 test_rust_build_cache_excludes_git_metadata 函数内部引入 from vllm.platforms import current_platform,用于检测当前平台。
  2. 将原先硬编码的 ("Dockerfile", "Dockerfile.cpu", "Dockerfile.xpu") 列表改为动态构建:基础列表为 ["Dockerfile", "Dockerfile.cpu"],仅当 current_platform.is_rocm() 为假时才追加 Dockerfile.xpu。
  3. 循环遍历该动态列表,执行原有的 Dockerfile 内容校验逻辑,确保在 ROCm 之外的其他平台仍能验证 Dockerfile.xpu。
    该改动不涉及生产代码,仅调整测试的覆盖范围,使其更符合各平台的文件实际情况。
文件 模块 状态 重要度
tests/tools/test_docker_build_metadata_args.py 测试 modified 4.33

关键符号

test_rust_build_cache_excludes_git_metadata

关键源码片段

tests/tools/test_docker_build_metadata_args.py test-coverage

核心改动:根据平台条件动态决定是否校验 Dockerfile.xpu,修复 ROCm CI 测试失败

# 从 vllm.platforms 导入 current_platform 以检测运行平台
def test_rust_build_cache_excludes_git_metadata() -> None:
    from vllm.platforms import current_platform
​
    # 基础列表始终包含公共 Dockerfile
    dockerfile_names = ["Dockerfile", "Dockerfile.cpu"]
    # 仅当非 ROCm 平台时追加 Dockerfile.xpu,避免 ROCm CI 因缺失文件而失败
    if not current_platform.is_rocm():
        dockerfile_names.append("Dockerfile.xpu")
​
    for name in dockerfile_names:
        dockerfile = (REPO_ROOT / "docker" / name).read_text()
        cached_stage, exact_version_stage = dockerfile.split(
            "FROM rust-build-cache AS rust-build", maxsplit=1
        )
        exact_version_stage = exact_version_stage.split("\nFROM ", maxsplit=1)[0]
        cached_run = cached_stage.rsplit("RUN ", maxsplit=1)[1]
​
        # 校验缓存阶段的 rust 构建不含 git 元数据
        assert 'SETUPTOOLS_SCM_PRETEND_VERSION="0.0.0+docker.cache"' in cached_run
        assert "source=.git,target=.git" not in cached_run
        # 校验精确版本阶段包含 git 元数据
        assert "source=.git,target=.git" in exact_version_stage
        assert 'SETUPTOOLS_SCM_PRETEND_METADATA="{dirty=false}"' in exact_version_stage
        assert "bash build_rust.sh" in exact_version_stage

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

主要风险是测试覆盖不足:在 ROCm 平台上不再验证 Dockerfile.xpu 的内容,如果未来该文件在 ROCm 上引入问题,此测试将无法捕获。但当前条件是合理的,因为 Dockerfile.xpu 本身针对 XPU 平台,与 ROCm 无关。此外,current_platform.is_rocm() 的判断逻辑可能影响其他平台,但现有逻辑只针对 ROCm 有差异,其他平台行为不变。

影响范围较小,仅影响 CI 测试的稳定性和覆盖范围。对用户功能无直接影响,对团队而言,修复了 ROCm CI 的失败,提高了构建可靠性,同时保持了其他平台的验证完整性。

测试覆盖范围缩减 平台相关逻辑依赖

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论