Prhub

#57046 [CI/Build][Rust Frontend] Retire Buf schema publishing

原始 PR 作者 JulienDarve 合并时间 2026-09-16 11:02 文件变更 4 提交数 2 评论 6 代码增减 +5 / -48

执行摘要

退役 Buf schema 发布,统一到 crates.io 分发

PR body 首句即交代动机:"Retire the Buf Schema Registry publication path added in vllm-project/vllm#51276, following the crates.io publishing support merged in vllm-project/vllm#56365"。即 crates.io 通道成熟后,BSR 渠道成为冗余维护。作者同时明确两条边界:保留 protobuf build/lint 检查且继续覆盖 fork 的 PR;并主动声明 "Consumers following Buf labels will no longer receive schema or generated SDK updates through that channel",即这是一个对外消费契约的 breaking change。背景上,#56365 的动机是让 Dynamo 等外部消费者通过标准 crates.io 获取 vLLM 的 protobuf/gRPC 绑定,不再依赖 Buf 的 Cargo registry,因此本 PR 的退役属于该方向的自然收尾。

值得花 10 分钟快速阅读,重点看三点设计决策:

  1. 先立后破的渠道迁移模式:先在 #56365 建立 crates.io 发布并让 Rust 前端消费同一 crate,再在本 PR 退役 BSR,避免出现无发布渠道的空窗期。
  2. 保留 buf build/lint 而非整体删除 workflow:发布路径可以退,但 schema 质量门禁不能退,且移除 owner 限定后 fork 也能校验。
  3. 文档对消费契约的明示:README 直接写明 "no longer published" 并给出替代路径,比在 release note 里提一句更可靠。
    该 PR 逻辑直白,不需要深挖源码,适合作为“发布基础设施收口”的参考案例。
讨论亮点

本 PR 没有实质性的技术交锋,评论全部是流程性交互:

  • BugenZhao 发起 @codex review,Codex 在提交 7568b2b 上完成审核,结论为 "Didn't find any major issues"。
  • BugenZhao 发起 /ci run,github-actions 确认 Buildkite CI #89222 针对 head 83ff59c 启动并正常通过。
  • 由于 PR 来自 fork,Claude bot 自动 review 被禁用(提示 maintainer 可手动 @claude review),但未被触发。
  • BugenZhao 最终 APPROVED,仅回复 "Thanks!"。

值得注意的“讨论”其实在 PR body 里:作者明确声明 "Consumers following Buf labels will no longer receive schema or generated SDK updates through that channel",这是对消费契约的显式变更公告,避免静默断供;同时声明搜索过 Buf Schema Registry、51276 in:body 等关键词,未发现重复退役 PR。

实现拆解

按 4 步拆解,无新增测试文件:

  1. 收窄 workflow 触发器(.github/workflows/buf.yml):删除 push.tags: "v*"、schedule: cron 0 8 * * *、workflow_dispatch 三个触发器,只保留 pull_request 的路径过滤(rust/proto/** 与本文件)。原因是发布职责已移交 proto-crate.yml,定时/手动推 BSR 不再需要。
  2. 移除发布步骤与特权(.github/workflows/buf.yml):删除 job 级 if: github.repository_owner == 'vllm-project' 限定、checkout 的 fetch-depth: 0(此前为发布取完整历史)以及 buf-action 的 token 透传;删除 "Publish nightly schema" 与 "Publish release schema" 两个 buf push 步骤,并保持 push: false。结果是 job 变成纯校验,且 fork 的 PR 也能触发 buf 校验,校验覆盖不降反升。
  3. 清理 registry 元数据(rust/proto/buf.yaml、rust/proto/buf.md):从 buf.yaml 删除 name: buf.build/vllm-project/vllm 模块注册名,lint 规则(MINIMAL + PACKAGE_DIRECTORY_MATCH 豁免)保持不变;整体删除只介绍 BSR 消费方式的 buf.md。
  4. 重写对外消费文档(rust/proto/README.md):将 BSR 发布说明替换为 "no longer published to the Buf Schema Registry",分别指引 Rust 消费者使用 crates.io 的 vllm-proto、其他语言消费者从本目录 .proto 文件生成绑定;同时删除 "Use proto-v* tags so they do not trigger Buf's v* release workflow" 的规避说明,因为该 tag 冲突已不存在。
  5. 验证配套:无新增测试;作者用 buf build rust/proto、buf lint rust/proto、pre-commit(含 actionlint 与 Markdown lint)、git diff --check 验证,Buf CLI 1.72.0 下全部通过;合并前 Buildkite CI #89222 针对 head 83ff59c 亦运行通过。
文件 模块 状态 重要度
.github/workflows/buf.yml CI 流水线 modified 4.72
rust/proto/buf.yaml Proto 配置 modified 2.93
rust/proto/buf.md Proto 文档 removed 2.34
rust/proto/README.md Proto 文档 modified 2.71

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

评论区精华

Codex 自动 code review 未发现问题 other

BugenZhao 通过 @codex review 触发自动审核;Codex 在提交 7568b2b 上完成审核并给出 "Didn't find any major issues"。Claude bot 因 PR 来自 fork 禁用自动审核,需 maintainer 手动触发但未被调用。

结论:无阻塞问题,BugenZhao 随后 APPROVED。 · 已解决

CI 运行与验证 测试

BugenZhao 发起 /ci run,github-actions 确认 Buildkite CI #89222 针对 head 83ff59c 启动并运行通过;作者在 Test Plan 中列出 buf build/lint、pre-commit、git diff --check 等本地验证均通过。

结论:CI 正常通过,PR 完成合并。 · 已解决

风险与影响

  1. 外部契约风险(低-中):依赖 buf.build/vllm-project/vllm 的 Buf 消费者将停止接收 schema 与生成 SDK 更新。缓解:README 已给出 crates.io 与源码生成两条替代路径,且 BSR 的 commit 与 SDK 版本不可变,已 pin 的消费者不受破坏。
  2. 运维变化:BUF_TOKEN secret、BSR 模块与 label 不再需要维护,可安全清理,这属于正向简化。
  3. 无回归面:proto wire schema、绑定生成器、proto-crate.yml(crates.io 工作流)均未改动;buf build/lint 在 PR 上继续运行,且因移除 repository_owner 限定而扩展到 fork,校验覆盖面不降反升。
  4. 文档一致性风险:若仓库其他位置仍有 BSR 引用会形成孤岛文档;作者已声明搜索关键词未发现重复退役 PR,但未逐一核对全部文档页。

对外部消费者:Rust 用户统一走 crates.io 的 vllm-proto,其他语言用户需自行从 .proto 文件生成绑定,不再有 BSR 托管 SDK 可用。对本仓库团队:减少 BSR 模块、label、token 三处运维负担,发布链路收敛为 crates.io 一条。对本仓库 CI:buf workflow 从“发布 + 校验”改为“纯校验”,每次 PR 的 CI 步骤更少、fork 同样受益。整体影响集中在发布渠道与文档,不触及推理运行时与模型行为,影响程度中等偏低。

对外发布契约变更 Buf 消费者需迁移 CI 仅剩校验

关联 Issue

#51276 [Build][gRPC] Publish protobuf schemas to Buf
#56365 [CI/Build][Rust Frontend] Publish vllm-proto on crates.io

完整报告

参与讨论