现已推出!阅读关于 11 月份的新功能和修复。

使用 Azure Pipelines 的 Visual Studio Code

2018 年 9 月 12 日,João Moreno,@joaomoreno

作为 Visual Studio Code 团队的开发人员,我的职责之一是维护和改进我们的构建和持续集成 (CI) 基础设施。鉴于 Azure Pipelines 的最新功能公告,Visual Studio Code 团队已经大幅改变了我们利用 Microsoft 技术的方式,为我们的开发人员和用户提供更好的协作平台。在这篇博客文章中,我将引导您了解 Visual Studio Code 的一些历史,重点介绍我们的 CI 流程和工具,以及它们如何随着时间的推移而变化。

Visual Studio Code 工程

像任何其他开源项目一样,我们需要拥有合适的工具和功能来接收、分类和处理尽可能多的代码贡献。这在开发者工具领域尤其如此,用户本身就是开发者:他们是一个充满激情、努力工作且非常高效的群体。截至这篇博客文章发布时,我们有 148 个开放的 PR 以及 3,482 个已关闭的 PR,考虑到项目至今 3 年的生命周期,平均每天大约有 3 个 PR。我们必须做好充分准备来处理这种规模的贡献,不仅要保持项目开发的健康,还要为其他开源项目提供如何在如此规模下运作的示例。我们实现这一目标的部分方式是通过简化我们的工作流程,将 PR 体验引入编辑器,但 CI 是处理大规模贡献的另一个重要组成部分。

直到最近,我们仍然依赖 OSS 社区对于公共持续集成的默认选择:使用 Travis CI 进行 Linux 和 macOS 构建,以及使用 AppVeyor 进行 Windows 构建。此外,我们使用 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 的 Microsoft 托管代理 提供了一组出色的软件来构建项目,而无需担心构建机器维护;
  4. YAML CI 允许创建 YAML 定义,这些定义与项目的源代码保持接近(Visual Studio Code 为其提供了 出色的扩展)。

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

第三方集成

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