基础设施团队很高兴地报告,我们去年开始的关于 GitHub Actions 作为 rust-lang/rust 仓库新 CI 平台的评估正在取得进展!
2020 年 3 月 20 日,我们合并了 PR #70190,将 GitHub Actions 配置添加到编译器仓库。我们仍然依赖现有的 Azure Pipelines 设置来控制合并,但并行运行两个提供商可以让我们在不影响贡献者工作的情况下找到 GitHub Actions 配置中的错误。
一旦 所有未解决的问题 都得到修复,基础设施团队将决定是切换到 GitHub Actions 还是继续使用 Azure Pipelines。我们预计将在几个月内做出决定。
GitHub Actions 有什么变化?
此更改对任何 Rust 用户都应该没有可见的影响,但将大大改善我们贡献者的体验。
我们的贡献者将注意到的主要区别是 CI 时间的大幅缩短。在当前的 Azure Pipelines 设置中,构建通常需要 3 个多小时才能完成(使用 60 个并行 2 核 VM),而我们预计新的 GitHub Actions 设置完成构建的时间将不到一半,这要归功于 GitHub 为我们慷慨准备的专用 8 核 VM 池。
另一个技术变化是,我们现在正在 rust-lang-ci/rust 分支上运行大多数 CI 构建。这只会影响想要获取所有过去构建列表的团队成员,并且由于我们的集成机器人 @bors,对其他所有人都是完全透明的。
项目正在使用什么配置?
我们的 CI 配置位于 src/ci/github-actions/ci.yml
。请注意,我们的配置没有使用标准的 GitHub Actions 语法,但我们依赖预处理器来扩展 YAML 锚点,以简化我们的维护工作。
为什么要放弃 Azure Pipelines?
我们对 Azure Pipelines 作为产品感到满意,但 Microsoft 和 GitHub 都要求我们尝试 GitHub Actions,因为它与我们已经使用的 GitHub 工作流程更紧密地集成。在我们在其他仓库中使用一段时间后,我们对它感到足够满意,开始评估迁移 rust-lang/rust。