Prhub

#48772 [CI] Gate non-default release wheel builds

原始 PR 作者 khluu 合并时间 2026-07-17 17:16 文件变更 4 提交数 1 评论 1 代码增减 +69 / -30

执行摘要

限制自动构建 wheel 至 CUDA 13.0 x86_64/aarch64

常规 release-v2 构建在每次合并到 main 后构建所有 wheel 变体,消耗大量 CI 资源且多数变体并不常用。该 PR 默认只构建最常用的 CUDA 13.0 变体,其余变体保留在手动触发门后,以减少不必要的构建时间和成本。

此 PR 是 CI 基础设施的合理优化,值得关注其门控设计模式。建议阅读 .buildkite/release-pipeline.yaml 中的步骤重组,理解 Buildkite 的 block 和条件控制用法。对于维护 CI 的团队有参考价值。

讨论亮点

PR 未产生实质性讨论。唯一评论来自 mergify[bot] 自动部署文档预览。由于 PR 由 AI 辅助生成,且无人工 Review 讨论,所有设计决策已在提交摘要中明确。

实现拆解

  1. 重新组织 pipeline 构建组:在 .buildkite/release-pipeline.yaml 中,将原 Build Python wheels 组拆分为两个组 Build CUDA 13.0 Python wheels(自动运行)和 Build additional Python wheels(通过 block 步骤手动触发)。自动组只包含 aarch64 和 x86_64 的 CUDA 13.0 构建。手动组包含其他所有变体,并依赖一个 block-build-additional-wheels 步骤,当 NIGHTLY != 1 时阻塞。
  2. 添加门控条件和依赖:手动组使用 if: build.env("NIGHTLY") != "1" 条件控制阻塞;当 NIGHTLY=1 时该步骤自动通过,实现完整构建。手动组还设置 allow_dependency_failure: true
  3. 索引脚本更新保护:在 .buildkite/scripts/generate-and-upload-nightly-index.sh 中,将更新 nightly 索引的条件改为检查 UPDATE_NIGHTLY_INDEX 环境变量(默认 1),并且仅当主分支且非 PR 时更新。同时版本索引更新也新增 UPDATE_VERSION_INDEX 变量控制。
  4. ROCm 构建索引保护:在 .buildkite/scripts/upload-rocm-wheels.sh 中,将更新 ROCm nightly 索引的条件从之前的主分支或 NIGHTLY=1 改为只允许 NIGHTLY=1 时更新,防止手动构建覆盖移动索引。
  5. 文档同步更新:在 docs/contributing/ci/nightly_builds.md 中说明新的构建策略和门控方式。
文件 模块 状态 重要度
.buildkite/release-pipeline.yaml 构建流水线 modified 5.18
.buildkite/scripts/generate-and-upload-nightly-index.sh 脚本工具 modified 3.09
.buildkite/scripts/upload-rocm-wheels.sh 脚本工具 modified 3.01
docs/contributing/ci/nightly_builds.md 文档 modified 2.02

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

评论区精华

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

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

风险与影响

  1. CI 配置风险:pipeline YAML 结构变更可能影响其他依赖此 pipeline 的工具或监控。但已通过 bk pipeline validate 和结构断言验证。
  2. 手动触发遗忘风险:若开发人员需要 CUDA 12.9 等变体但未意识到需手动触发,可能延迟获取。文档中已说明新行为。
  3. 索引覆盖风险:新增的环境变量控制降低了手动构建覆盖 nightly 索引的风险,但若环境变量误设仍可能发生。

CI 维护团队:减少每次合并后构建的 wheel 数量,节省计算资源和时间,降低 pipeline 失败概率。普通开发者:默认获取 CUDA 13.0 构建,需要其他变体时需手动触发或使用 NIGHTLY=1 的完整构建。ROCm/CPU 用户:构建不再自动更新 nightly 索引,需按需触发。

CI 配置变更影响全局 pipeline 手动触发可能被忽略 环境变量依赖增加复杂性

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论