本文是对 Rust 官方 Inside Rust 博客《Infrastructure Team 2025 Q4 Recap and Q1 2026 Plan》的完整中文解读。作者为 Marco Ieni,代表 Rust 基础设施团队发布于 2026 年 1 月 13 日。
内容结构概览
一、2025 Q4 成果
team仓库中纳入更多配置项(IaC 化)- GitHub Environments 全面迁入
team仓库 - Trusted Publishing 配置纳入 IaC
- GitHub Environments 全面迁入
- crates.io 索引与 docs.rs 迁移至 Fastly CDN
- 新版 Bors 正式用于合并 Rust 编译器 PR
- rustc-perf 基准测试支持并行执行
- 多个仓库默认分支由
master重命名为main - 新成员入职
- Triagebot 多项功能增强
- label 命令支持别名
- 自动 backport 提名转为建议式工作流
- 新增
r? me与@rustbot reroll命令 - 移除
[no-mentions]handler - GHA 日志查看器支持高亮选中行
[mentions]配置支持 glob 模式
- Internal Sites 团队正式开始运作
二、2026 Q1 计划
- 继续推进 Q4 未完成目标
- docs.rs 基础设施现代化
- 外部硬件 CI 策略发布
- GCP 开发桌面环境
- 账号与访问管理(Google Workspace + SAML)
- 迁移至 GitHub Rulesets
三、参与贡献
一、2025 Q4 成果
1. team 仓库中纳入更多配置项
基础设施团队始终致力于将手动配置项迁移至基础设施即代码(Infrastructure as Code,IaC)体系。IaC 带来多方面好处:
- 自助服务:即便没有管理员权限,各团队成员也可以直接查看自己的配置,并通过提交 pull request 的方式申请变更。
- 安全性提升:配置漂移(configuration drift)更难发生。手动变更虽然仍然可能,但更容易被检测到,并在下次 IaC 自动化运行时被还原。
GitHub Environments 全面迁入 team 仓库
所有 Rust 项目仓库的 GitHub Environments 现已全部在 team 仓库中以声明式配置管理。以下是 bors 仓库配置文件的示例:
toml
[environments.production]
branches = ["main"]
[environments.staging]
branches = ["main"]
感谢 amustaque97 在 GitHub environments issue 上做出的出色贡献。
Trusted Publishing 配置纳入 IaC
所有 Rust 项目旗下使用 crates.io trusted publishing 的 crate,现已通过 team 仓库以 IaC 方式进行配置管理。以下是 measureme 仓库配置文件的示例:
toml
[[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 Long 和 Sakibul Islam。
4. rustc-perf 基准测试支持并行执行
团队在 Rust 编译器并行基准测试项目目标上取得了实质性进展。目前已部署两台 x64 机器,可并行执行基准测试任务,将一次完整编译器基准测试的耗时从约 1 小时 20 分钟缩短至约 40 分钟。
2026 年,团队计划进一步改进基准测试套件,包括支持在其他硬件架构上进行基准测试。
5. 多个仓库默认分支由 master 重命名为 main
以下仓库已完成默认分支从 master 到 main 的重命名:
annotate-snippets-rsar_archive_writercmake-rscompiler-builtinsdocs.rsinfra-teammoderation-teamrust(即 Rust 编译器主仓库)rustfmtrustuprustwidestdarchteamthis-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 方案(参见 compiler 和 rustdoc 频道)。在 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 中实现。借助这一变更,现在可以将相关路径归并到同一条规则下。
示例:
现在可以直接写:
toml
[mentions."library/{dec2flt,flt2dec}"]
cc = ["@ghost"]
而无需为每个目录分别维护一条独立的配置项。
8. Internal Sites 团队正式开始运作
新成立的 t-internal-sites 团队负责维护和支持 Rust 项目的内部网站,包括 Forge 和 RFC 站点,并在本季度采取了首批行动。
团队首先着手处理了那些因 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 基础设施团队发布。原文链接:https://blog.rust-lang.org/inside-rust/2026/01/13/infrastructure-team-q4-2025-recap-and-q1-2026-plan/