在 VS Code 中试用

Visual Studio Code 使用 Azure Pipelines

September 12, 2018 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 是处理大规模贡献的另一个重要部分。

直到最近,我们一直依赖于 OSS 社区对公共持续集成的默认选择:Linux 和 macOS 构建使用 Travis CI,Windows 使用 AppVeyor。此外,我们还使用 Coveralls 提供详细的测试覆盖率报告。这些服务为我们公共仓库中的 PR 和代码分支提供质量报告,因为它们自动化了编译、运行代码卫生检查执行多个测试套件,这些对于在大量贡献涌入的分布式团队中保持质量至关重要。这种服务组合需要理解和维护至少 3 个不同的系统,每个系统都有自己的特殊文件格式、语法、怪癖、限制等。

采用 Azure Pipelines

今年早些时候,Azure Pipelines(当时称为 Visual Studio Team Services)团队联系了我们,邀请我们尝试新事物。这一公告标志着我们转向了一个更精简的持续集成解决方案。我们的构建现在可以在所有平台上同时运行,快来看看吧

VSCode Project Build Page

为了实现这一转变,需要做很多很酷的事情。让我们分解一下

  1. Azure Pipelines 对公共项目提供支持,这使我们能够运行一个面向公众的 Visual Studio Code 项目,所有持续集成构建都在其中运行;
  2. Azure Pipelines 中的构建代理长期以来一直支持 Windows、macOS 和 Linux 平台矩阵;
  3. 在 Azure Pipelines 中运行 macOS、Linux 和 Windows 的微软托管代理提供了出色的软件堆栈,可以构建项目而无需担心构建机器的维护;
  4. YAML CI 允许创建与项目源代码紧密相关的 YAML 定义(Visual Studio Code 为此提供了出色的扩展)。

综合所有这些,我们最终能够专注于一个单一的 CI 解决方案。Azure Pipelines 上的 Visual Studio Code 构建在一个构建中运行我们的编译、卫生检查和测试套件,并自动将构建分发到不同的平台上。由于我们使用的是微软托管的构建代理,我们无需担心维护这些机器。

第三方集成

Azure Pipelines 还提供 GitHub 集成,在我们的 GitHub 项目页面上,特别是在拉取请求中,它会显示构建结果指示器。

Pull Request Integration

我们还构建了一个聊天机器人,它连接到 Azure Pipeline 的 REST API,并在构建失败时向我们的内部聊天提供通知。

Chat Bot Automation

展望未来

我的下一个任务是利用代码覆盖率报告,以便获得比之前工具组合更好的端到端 CI 流程。

转向 Azure Pipelines 对我们来说是一个巨大的成功。现在,由于构建不再分散,整体代码质量更容易理解。我们还整合了构建定义文件的数量和格式。我们对这一变化感到非常高兴,并对 Azure Pipelines 的未来充满期待。


如果您想了解更多关于公共项目和 Azure Pipelines 的信息,请查看他们的博客文章

您想试试 Visual Studio Code 吗?为您的首选平台立即下载。如果您像我们一样,总是想运行最新最好的版本,那么获取我们的每日构建 Insider 版本。您只是想联系我们或保持联系?请在 Twitter 上关注我们:@code

代表 VS Code 团队祝您:编程愉快!

João Moreno, @joaomoreno