Visual Studio Code 使用 Azure Pipelines
2018 年 9 月 12 日,João Moreno,@joaomoreno
作为 Visual Studio Code 团队的一名开发人员,我的职责之一是维护和改进我们的构建和持续集成 (CI) 基础设施。鉴于 Azure Pipelines 的最新功能发布,Visual Studio Code 团队已经显著改变了我们利用微软技术的方式,以提供一个更好的协作平台,既服务于我们的开发人员,也服务于我们的用户。在这篇博文中,我将向您介绍一些 Visual Studio Code 的历史,重点关注我们的 CI 流程和工具以及它们随着时间的变化。
Visual Studio Code 工程
像任何其他开源项目一样,我们需要拥有正确的工具和能力来接收、分类和处理尽可能多的代码贡献。这在开发者工具领域尤其如此,因为用户本身就是开发者:他们是一群充满激情、勤奋且非常高效的人。截至本博文发布时,我们有 148 个开放的 PR 以及 3,482 个已关闭的 PR,考虑到项目至今已有 3 年的生命周期,这平均每天大约有 3 个 PR。我们必须为处理如此规模的贡献做好充分准备,这不仅能保持项目开发的健康,还能为其他开源项目提供一个如何在这种规模下运作的范例。我们实现这一目标的部分方式是通过将 PR 体验引入编辑器来简化我们的工作流程,但 CI 是处理大规模贡献的另一个重要部分。
直到最近,我们一直依赖开源社区在公共持续集成方面的默认选择:我们的 Linux 和 macOS 构建使用 Travis CI,而 Windows 构建使用 AppVeyor。此外,我们还使用 Coveralls 来提供详细的代码覆盖率报告。这些服务为我们公共仓库中的 PR 和代码分支提供质量报告,因为它们自动化了编译、运行代码规范检查和执行多项测试套件,所有这些对于在一个接收大量贡献的分布式团队中保持质量至关重要。这种服务组合需要理解和维护至少 3 个不同的系统,每个系统都有自己的特殊文件格式、语法、怪癖、限制等。
采用 Azure Pipelines
今年早些时候,Azure Pipelines(当时的 Visual Studio Team Services)团队联系我们,希望我们尝试一些新东西。这项发布标志着我们向更精简的持续集成解决方案迈进。我们的构建现在可以同时在所有平台上运行,点击此处查看
为了实现这一转变,我们需要做很多很棒的事情。让我们来分解一下:
- Azure Pipelines 对公共项目的支持使我们能够运行一个面向公众的 Visual Studio Code 项目,其中运行我们所有的持续集成构建;
- Azure Pipelines 中的构建代理长期以来一直支持 Windows、macOS 和 Linux 平台矩阵;
- Azure Pipelines 中运行 macOS、Linux 和 Windows 的微软托管代理提供了一个出色的软件栈,可以构建项目而无需担心构建机器的维护;
- YAML CI 允许创建 YAML 定义,这些定义与项目的源代码保持紧密关联(Visual Studio Code 为此提供了出色的扩展)。
综合所有这些,我们最终能够专注于一个单一的 CI 解决方案。Azure Pipelines 上的 Visual Studio Code 构建在一个构建中运行我们的编译、规范检查和测试套件,并自动将构建分发到不同的平台。由于我们使用的是微软托管的构建代理,因此我们无需担心维护这些机器。
第三方集成
Azure Pipelines 还提供 GitHub 集成,这在我们的 GitHub 项目页面上,尤其是在拉取请求中,为我们提供了构建结果指示器。
我们还构建了一个聊天机器人,它连接到 Azure Pipeline 的 REST API,并在构建中断时向我们的内部聊天提供通知。
未来展望
我的下一个任务是利用代码覆盖率报告,以获得比之前混合工具更好的端到端 CI 流程。
转向 Azure Pipelines 对我们来说是一个巨大的成功。现在,由于构建不再分散各地,整体代码质量更容易理解。我们还整合了构建定义文件的数量和格式。我们对这一变化感到非常高兴,并对 Azure Pipelines 的未来充满期待。
如果您想了解更多关于公共项目和 Azure Pipelines 的信息,请查看他们的博文。
您想尝试 Visual Studio Code 吗?立即下载适用于您选择的平台版本。如果您像我们一样,总是想运行最新最好的版本,那么请获取我们每日构建的 Insider 版本。您只是想联系我们或保持联系吗?请在 Twitter 上关注我们 @code。
代表 VS Code 团队:祝您编码愉快!
João Moreno, @joaomoreno