GitHub Actions 评估进展更新

2020 年 4 月 7 日 · Pietro Albini 代表 基础设施团队

基础设施团队很高兴地报告,我们去年开始的针对 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 核虚拟机),而我们预计新的 GitHub Actions 设置完成构建所需时间将少于一半,这得益于 GitHub 为我们慷慨提供的专用 8 核虚拟机池。

另一个技术变化是,我们现在在 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 迁移到 GitHub Actions。