新 Azure Pipelines 用户应了解的关键概念

Azure DevOps Services

了解构成 Azure 管道的关键概念和组件。 了解管道的基本术语和组成部分可以帮助你更有效地构建、测试和部署代码。

关键概念概述

关键概念图形

  • 触发器告知管道运行。
  • 每个管道都由一个或多个阶段组成。 管道可以部署到一个或多个环境。
  • 阶段是在管道中组织作业的一种方式,每个阶段可以有一个或多个作业。
  • 每个作业在一个代理上运行。 作业也可以是无代理的。
  • 每个代理运行包含一个或多个步骤的作业。
  • 步骤可以是任务脚本,是管道的最小构建基块。
  • 任务是用于执行操作的预打包脚本,例如调用 REST API 或发布生成工件。
  • 生成工件是由运行发布的文件或包的集合。

Azure Pipelines 术语

Agent

生成或部署运行时,系统开始运行一个或多个作业。 代理是计算基础结构,带有已安装的代理软件,该软件每次运行一个作业。 例如,作业可以在 Microsoft 托管的 Ubuntu 代理上运行。

有关不同类型的代理及其使用方法的详细信息,请参阅 Azure Pipelines 代理

审批

审批定义部署运行前所需的一组验证。 手动审批是一种常见检查,用于控制到生产环境的部署。 在环境中配置检查时,管道运行将暂停,直到所有检查都成功完成。

项目

生成工件是由运行发布的文件或包的集合。 工件可用于后续任务,例如分发或部署。 有关详细信息,请参阅 Azure Pipelines 中的工件

持续交付

持续交付 (CD) 是生成、测试代码并将其部署到一个或多个测试和生产阶段的过程。 在多个阶段进行部署和测试有助于提高质量。 持续集成系统会生成可部署的项目,其中包括基础结构和应用。 自动发布管道使用这些项目将新版本和修补程序发布到现有系统。 监视和警报系统持续运行,以提高对整个 CD 过程的可见性。 此过程可确保经常及早地发现错误。

持续集成

持续集成 (CI) 是开发团队用于简化代码测试和生成的做法。 CI 有助于在开发周期的早期发现 bug 或问题,这样就可以更容易、更快速地修复它们。 自动测试和生成作为 CI 过程的一部分运行。 该过程可以按设置计划运行或/和随时推送代码。 称为项目的项是从 CI 系统生成的。 持续交付发布管道使用它们来推动自动部署。

部署

经典管道部署是运行一个阶段的任务的操作。 部署可以包括运行自动测试、部署生成工件,以及为该阶段指定的任何其他操作。

对于 YAML 管道,部署是指部署作业。 部署作业是针对环境按顺序运行的步骤集合。 可以将运行一次、滚动和 Canary 等策略用于部署作业。

部署组

部署组是指安装了代理的一组部署目标计算机。 部署组就是代理的另一个分组,与代理池相似。 可以使用部署组在管道中为作业设置部署目标。 详细了解如何为部署组预配代理。

环境

环境是你部署应用程序的资源集合。 一个环境可以包含一个或多个虚拟机、容器、Web 应用或任何服务。 在完成构建并运行测试后,管道会部署到一个或多个环境中。

作业

一个阶段可以包含一个或多个作业。 每个作业在代理上运行。 作业表示一组步骤的执行边界。 所有步骤均在同一个代理上运行。 如果要在不同的环境中运行一系列步骤,使用作业最有效。 例如,你可能希望生成两种配置 - x86 和 x64。 在这种情况下,你有一个阶段和两个作业。 一个作业用于 x86,另一个作业用于 x64。

无代理作业无需使用代理即可在 Azure DevOps 和 Azure DevOps Server 中运行。 有限数量的任务支持无代理作业。

管道

管道定义了应用的持续集成和部署过程。 管道是由一个或多个阶段组成。 我们可以将它视为一个工作流,定义了如何运行测试、生成和部署步骤。

对于经典管道,管道也可以称为定义。

发布

对于经典管道,发布是指在管道中指定的一组版本控制的项目。 发布包括在发布管道中执行所有任务和操作所需的所有信息的快照,例如阶段、任务、策略(如触发器和审批者),以及部署选项。 可以使用部署触发器或 REST API 手动创建发布。

对于 YAML 管道,生成和发布阶段位于一个多阶段管道中。

运行

运行表示管道的一次执行。 它会收集与运行步骤相关的日志和运行测试的结果。 在运行期间,Azure Pipelines 将首先处理管道,然后将运行发送到一个或多个代理。 每个代理都将运行作业。 详细了解管道运行序列

对于经典管道,生成表示管道的一次执行。

脚本

脚本使用命令行、PowerShell 或 Bash 将代码作为管道中的一个步骤运行。 可以编写适用于 macOS、Linux 和 Windows 的跨平台脚本。 与任务不同,脚本是特定于管道的自定义代码。

阶段

阶段是管道中的逻辑边界。 它可用于标记关注点分离(例如,生成、QA 和生产)。 每个阶段可以包含一个或多个作业。 在管道中定义多个阶段时,默认情况下,它们依次运行。 可以指定阶段运行时的条件。 当你考虑是否需要一个阶段时,问问自己:

  • 是否是由单独的组来管理此管道的不同部分? 例如,你可能有一个测试管理器来管理与测试相关的作业,而另一个管理器则管理与生产部署相关的作业。 在这种情况下,有必要为测试和生产设置单独的阶段。
  • 是否有一组与特定作业或作业集连接的审批? 如果是的话,可以使用阶段将作业分解为需要审批的逻辑组。
  • 是否有作业需要长时间运行? 如果管道中作业的运行时间较长,则将其置于自己的阶段是有意义的。

步骤

步骤是管道的最小构建块。 例如,管道可能是由生成和测试步骤组成。 步骤可以是脚本或任务。 任务只是为你提供方便而预先创建的脚本。 要查看可用任务,请参阅生成和发布任务参考。 有关创建自定义任务的信息,请参阅创建自定义任务

任务

任务是用于在管道中定义自动化的构建基块。 任务是已通过一组输入提取出的打包脚本或过程。

触发器

触发器用于命令管道何时运行。 可以将管道配置为在计划的时间推送到存储库时或完成另一个生成任务时运行。 所有这些操作都称为触发器。 有关详细信息,请参阅生成触发器发布触发器

包括安全文件变量组安全文件是一种存储文件并在管道之间共享这些文件的方式。 例如,你可能希望在不同的管道中引用同一个文件。 在这种情况下,可以将文件保存在中,并在需要时使用。 变量组存储可能要传递到 YAML 管道或跨多个管道提供的值和机密。

关于作者

  • 感谢 Dave Jarvis 为关键概念概述的图形绘制做出的贡献。