Prhub

#42357 [CI] Inline build artifact annotations in release pipeline

原始 PR 作者 khluu 合并时间 2026-05-13 06:57 文件变更 3 提交数 4 评论 7 代码增减 +31 / -38

执行摘要

释放流水线注解内联化,提升实时可见性

PR body 明确指出需要在每个 wheel 构建、镜像构建和多架构 manifest 步骤完成后立即添加注解,以提供实时可见性。删除单独的“Annotate release workflow”步骤,因为注解现已内联执行。

该 PR 属于基础设施优化,不涉及核心业务逻辑,但可读性和架构清晰度有提升。建议采纳关于脚本失败容忍的建议,以避免潜在的生产问题。对于开发者和运维人员,值得了解新的注解机制,便于后续排查发布问题。

讨论亮点

gemini-code-assist[bot] 提出了 7 条评论,主要集中在两点:

  1. 注解脚本的失败处理set -e 会导致 buildkite-agent annotate 命令失败时整个构建步骤失败,建议将其视为非关键操作,避免阻塞发布流程。
  2. 注解上下文丢失:旧脚本提供了完整的 aws s3 cp 命令(包含 S3 bucket 和 commit 路径),而新注解仅显示文件名,缺少下载所需的前缀。建议包括完整 S3 URI。
    后续提交(第 4 个 commit)已采纳此建议,将注解改为包含完整 S3 路径。

实现拆解

  1. 创建 annotate-build-artifact.sh 脚本(+9 行):该脚本接受 label 和 value 两个参数,通过 buildkite-agent annotate --append 以 Info 风格追加一行 markdown 格式的注解到 release-artifacts 上下文中。
  2. 修改 release-pipeline.yaml:在每一个 wheel 构建步骤(共 6 个)和镜像构建步骤(共 3 个)的 commands 末尾添加调用 annotate-build-artifact.sh 的命令,传递步骤标签和产物路径(wheel 为 S3 URI,镜像为 ECR tag)。
  3. 删除 annotate-release.sh-27 行):该旧脚本在发布工作流末尾一次性生成包含所有 wheel 下载命令的注解,现已不再需要。
文件 模块 状态 重要度
.buildkite/release-pipeline.yaml CI 配置 modified 5.12
.buildkite/scripts/annotate-build-artifact.sh 构建脚本 added 4.0
.buildkite/scripts/annotate-release.sh 构建脚本 removed 4.29

关键源码片段

.buildkite/scripts/annotate-build-artifact.sh core-logic

新增脚本,实现内联注解的核心逻辑,通过 `buildkite-agent annotate --append` 追加产物信息,是整个变更的执行器。

#!/bin/bash
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
#
# Append a build artifact line to the Buildkite annotation.
# Usage: annotate-build-artifact.sh <label> <value>
set -e
# 将参数格式化为 "- **label**: `value`" 并通过 stdin 管道传给 buildkite-agent annotate
# 使用 --append 追加到已存在的 'release-artifacts' 上下文中,避免覆盖其他注解
echo "- **${1}**: \`${2}\`" | \
  buildkite-agent annotate --append --style 'info' --context 'release-artifacts'

评论区精华

注解脚本的失败处理 - set -e 导致构建步骤可能失败 正确性

gemini-code-assist[bot] 指出 `set -e` 会使 `buildkite-agent annotate` 失败时导致整个构建步骤失败,建议将注解视为非关键操作。

结论:未在 PR 中得到明确回应或修改,该问题在最终代码中仍存在。 · unresolved

注解上下文丢失 - 缺少 S3 完整路径 正确性

gemini-code-assist[bot] 多次指出新注解仅提供文件名,缺少旧脚本中的完整 S3 URI,导致运维人员无法直接复制下载命令。同时指出若 glob 匹配失败会显示 `*.whl`,造成误导。

结论:第 4 个 commit 已采纳建议,在 `release-pipeline.yaml` 中将 wheel 注解改为包含 `s3://vllm-wheels/$BUILDKITE_COMMIT/` 前缀的完整 URI。 · 已解决

风险与影响

  1. 失败风险annotate-build-artifact.sh 使用 set -e,若 buildkite-agent annotate 因网络或 API 问题失败,会导致整个构建步骤失败,可能阻塞发布流程。建议在脚本中增加错误容忍或使用 || true
  2. 兼容性风险:原先单个集中式注解被拆分为多个内联注解,可能改变 Buildkite UI 中的注解展示行为。ROCm 注解保持不变,但需验证是否受 release-artifacts 上下文冲突影响。

对用户:无直接影响。对系统:发布流水线步骤完成后即刻显示产物信息,提升运维实时可见性。对团队:减少一个独立的注解步骤,简化流水线结构;但需确保新的内联注解覆盖所有需要记录的产物。

注解失败可能导致构建失败 glob 匹配失败时显示通配符原值

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论