Rust 基础设施团队 2025 Q4 回顾与 2026 Q1 计划

1 阅读9分钟

本文是对 Rust 官方 Inside Rust 博客《Infrastructure Team 2025 Q4 Recap and Q1 2026 Plan》的完整中文解读。作者为 Marco Ieni,代表 Rust 基础设施团队发布于 2026 年 1 月 13 日。


内容结构概览

一、2025 Q4 成果

  1. team 仓库中纳入更多配置项(IaC 化)
    • GitHub Environments 全面迁入 team 仓库
    • Trusted Publishing 配置纳入 IaC
  2. crates.io 索引与 docs.rs 迁移至 Fastly CDN
  3. 新版 Bors 正式用于合并 Rust 编译器 PR
  4. rustc-perf 基准测试支持并行执行
  5. 多个仓库默认分支由 master 重命名为 main
  6. 新成员入职
  7. Triagebot 多项功能增强
    • label 命令支持别名
    • 自动 backport 提名转为建议式工作流
    • 新增 r? me@rustbot reroll 命令
    • 移除 [no-mentions] handler
    • GHA 日志查看器支持高亮选中行
    • [mentions] 配置支持 glob 模式
  8. Internal Sites 团队正式开始运作

二、2026 Q1 计划

  1. 继续推进 Q4 未完成目标
    • docs.rs 基础设施现代化
    • 外部硬件 CI 策略发布
    • GCP 开发桌面环境
  2. 账号与访问管理(Google Workspace + SAML)
  3. 迁移至 GitHub Rulesets

三、参与贡献


一、2025 Q4 成果

1. team 仓库中纳入更多配置项

基础设施团队始终致力于将手动配置项迁移至基础设施即代码(Infrastructure as Code,IaC)体系。IaC 带来多方面好处:

  • 自助服务:即便没有管理员权限,各团队成员也可以直接查看自己的配置,并通过提交 pull request 的方式申请变更。
  • 安全性提升:配置漂移(configuration drift)更难发生。手动变更虽然仍然可能,但更容易被检测到,并在下次 IaC 自动化运行时被还原。

GitHub Environments 全面迁入 team 仓库

所有 Rust 项目仓库的 GitHub Environments 现已全部在 team 仓库中以声明式配置管理。以下是 bors 仓库配置文件的示例:

[environments.production]
branches = ["main"]

[environments.staging]
branches = ["main"]

感谢 amustaque97GitHub environments issue 上做出的出色贡献。

Trusted Publishing 配置纳入 IaC

所有 Rust 项目旗下使用 crates.io trusted publishing 的 crate,现已通过 team 仓库以 IaC 方式进行配置管理。以下是 measureme 仓库配置文件的示例:

[[crates-io]]
crates = ["analyzeme", "decodeme", "measureme"]
publish-workflow = "publish.yml"
publish-environment = "publish"

这一改变意味着,未来为更多 Rust 项目 crate 配置 trusted publishing 的工作将变得更加便捷和统一。


2. crates.io 索引与 docs.rs 迁移至 Fastly CDN

crates.io 索引与 docs.rs 网站现已通过 Fastly CDN 提供服务。

做出这一改变的原因是:Fastly 向 Rust 项目捐赠了 CDN 资源,团队希望将 AWS 积分节省下来用于其他基础设施需求。

针对 docs.rs,团队还启用了 Fastly 的 shielding(盾牌) 功能,该功能在现有缓存层之外额外增加一层缓存,从而减轻源服务器的负载。

从监控数据来看,效果非常显著:在 12 月 2 日进行短暂实验、12 月 3 日正式永久启用 shielding 之后,docs.rs 的活跃连接数出现了明显下降。

值得注意的是,crates.io 索引目前仍有一部分流量由 CloudFront 承载,团队可以灵活配置各 CDN 的流量分配比例。

感谢 crates.io 和 docs.rs 团队在这一过程中提供的协助。


3. 新版 Bors 正式用于合并 Rust 编译器 PR

基础设施团队与 Bors 团队 持续推进 Rust CI 从旧版 Bors(即 Homu)向新版 Bors 的迁移工作。新版 Bors 本身使用 Rust 语言编写。

本季度,新版 Bot 已正式用于 rust-lang/rust 仓库的 PR 合并流程,标志着从 Homu 的迁移工作全面完成,持续集成基础设施的可靠性也随之得到提升。

特别感谢所有为 Bors 开发做出贡献的贡献者,尤其是 Võ Hoàng LongSakibul Islam


4. rustc-perf 基准测试支持并行执行

团队在 Rust 编译器并行基准测试项目目标上取得了实质性进展。目前已部署两台 x64 机器,可并行执行基准测试任务,将一次完整编译器基准测试的耗时从约 1 小时 20 分钟缩短至约 40 分钟

2026 年,团队计划进一步改进基准测试套件,包括支持在其他硬件架构上进行基准测试。


5. 多个仓库默认分支由 master 重命名为 main

以下仓库已完成默认分支从 mastermain 的重命名:

  • annotate-snippets-rs
  • ar_archive_writer
  • cmake-rs
  • compiler-builtins
  • docs.rs
  • infra-team
  • moderation-team
  • rust(即 Rust 编译器主仓库)
  • rustfmt
  • rustup
  • rustwide
  • stdarch
  • team
  • this-week-in-rust

6. 新成员入职

Rust 基金会在 Q4 2025 新招募了一名基础设施工程师,并将于 2026 年 1 月正式入职,进一步提升团队的整体能力,以更好地服务 Rust 项目。

感谢 Kobzol 在招聘过程中的大力协助。


7. Triagebot 多项功能增强

Triagebot 是 Rust 团队的"得力助手"机器人,持续处理 GitHub 和 Zulip 聊天上的各类工作流。本季度对其进行了多项值得关注的改进。

label 命令支持别名

团队现在提供了一种机制,允许在向 GitHub issue(或 pull request)批量添加标签时使用别名。如果你发现自己反复添加或移除同一组标签,现在可以为这组操作创建一个别名。

示例:

原来需要输入:

@rustbot label +regression-untriaged +I-prioritize +needs-repro

现在可以简化为:

@rustbot label regression-needs-triaging

感谢 @apiraino#2216 中实现了这一功能(文档链接)。

自动 backport 提名转为建议式工作流

团队现在为各项目团队提供了一套更流畅的 backport 工作流,用于将补丁回港(backport)到 stable/beta 发布渠道。任何对已有补丁感兴趣、希望将其提前测试的人都可以手动"提名"该补丁进行 backport。Backport 提名将在每周的 triage 团队会议上进行讨论,然后批准或拒绝。

现在,各团队可以配置 triagebot,使其:

  • 自动提名修复了 beta/stable 渠道中出现的 P-high/P-critical 级别回归(regression)的补丁。
  • 自动在 Zulip 上开启话题,以便异步评估 backport 方案(参见 compilerrustdoc 频道)。在 triage 会议期间,只需快速浏览相关话题即可更快作出决定。

感谢 @apiraino#2191 中实现了这一功能(文档链接)。

新增 r? me@rustbot reroll 命令

本季度新增了两项 triagebot 功能,用于改善审查者(reviewer)的分配流程。

r? me 自我分配快捷命令@Urgau#2218 中添加了对 r? me 的支持,作为自我分配的简写形式。这为用户在将 PR 分配给自己时提供了一种更便捷的替代方式,无需手动输入 r? @username

@rustbot reroll 重新分配命令@Kobzol#2219 中新增了 @rustbot reroll 命令。该命令会重新运行 PR 首次开启时触发的自动审查者分配逻辑,使用最新的 diff 和 owner map 重新进行分配。

移除 [no-mentions] handler

团队已将 [no-mentions] handler 从 triagebot 中移除,因为它已不再必要。该 handler 最初的用途是提醒用户避免在 commit 消息中使用 @ 提及,以防触发被提及用户的通知。

感谢 GitHub 最近的变更——禁止 commit 中的提及触发通知,这一变通方案已不再需要。这一改进简化了所有相关人员的工作流程。

GHA 日志查看器支持高亮选中行

Triagebot 的 GitHub Actions 日志查看器现在支持高亮选中的日志行,功能与 GitHub 原生代码高亮类似。

这一改进由 @Urgau#2234 中实现。用户现在可以在构建日志中选中一行或多行,并通过带高亮的 URL 方便地分享,使他人能够直接定位到长日志中的关键部分。

[mentions] 配置支持 glob 模式

triagebot 中的 [mentions] 配置现在支持 glob 模式匹配

这一改进由 @Urgau#2244 中实现。借助这一变更,现在可以将相关路径归并到同一条规则下。

示例:

现在可以直接写:

[mentions."library/{dec2flt,flt2dec}"]
cc = ["@ghost"]

而无需为每个目录分别维护一条独立的配置项。


8. Internal Sites 团队正式开始运作

新成立的 t-internal-sites 团队负责维护和支持 Rust 项目的内部网站,包括 ForgeRFC 站点,并在本季度采取了首批行动。

团队首先着手处理了那些因 t-internal-sites 成立之前缺乏所有权归属而长期滞留的非 RFC 类过期 pull request


二、2026 Q1 计划

1. 继续推进 Q4 2025 未完成目标

Q4 2025 有若干目标未能如期完成,将延续至 Q1 2026 继续推进:

docs.rs 基础设施现代化:尽管 Q4 已在 docs.rs 的 CDN 配置等方面做出了多项改进,但团队仍希望将其从单一 EC2 实例迁移到现代化的托管部署方案。

外部硬件 CI 策略:发布在外部硬件上运行 Rust CI 的需求规范与相关要求。

GCP 开发桌面环境:在 GCP 上搭建一至两台开发桌面(dev desktop)实例。

以上目标的详细背景可参阅团队此前发布的 Q4 2025 计划


2. 账号与访问管理

继续推进 rust-lang/infra-team#64 中启动的工作——为 Rust 项目搭建 Google Workspace,并通过 SAML 实现自动化的账号与访问权限管理。


3. 迁移至 GitHub Rulesets

为获得更大的灵活性与可配置性,团队计划将所有 Rust 项目仓库中的分支保护规则(branch protection rules)迁移至 GitHub Rulesets

目前,分支保护规则已以代码形式定义在 team 仓库中,因此需要更新 IaC 自动化逻辑,使其改为创建 Rulesets。

此次迁移还将带来一个额外收益:支持将合并队列(merge queues)也纳入 IaC 管理——这在当前机制下尚不可行(参见 rust-lang/team#1735)。


三、参与贡献

如果你对参与 Rust 基础设施建设感兴趣,欢迎查阅 infra-team 仓库了解更多信息,也可以在 Zulip 上直接联系团队。

团队始终欢迎新的贡献者加入。


原文作者:Marco Ieni,代表 Rust 基础设施团队发布。原文链接:blog.rust-lang.org/inside-rust…