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

Azure DevOps Services

了解构成管道的关键概念和组件。 了解管道的基本术语和部分有助于更有效地可靠地交付更好的代码。

关键概念概述

关键概念图形

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

Azure Pipelines 术语

Agent

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

有关不同类型的代理以及如何使用这些代理的详细信息,请参阅 Azure Pipelines 代理

审批

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

项目

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

持续交付

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

持续集成

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

部署

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

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

部署组

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

环境

环境是部署应用程序的资源集合。 它可以包含一个或多个虚拟机、容器、Web 应用或任何用于托管正在开发的应用程序的服务。 管道可能会在生成完成后将应用部署到一个或多个环境,并运行测试。

作业

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

管道

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

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

发布

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

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

运行

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

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

脚本

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

阶段

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

  • 单独的组是否管理此管道的不同部分? 例如,可以有一个测试管理器来管理与测试相关的作业,以及管理与生产部署相关的作业的不同经理。 在这种情况下,有单独的测试阶段和生产阶段是有意义的。
  • 是否有一组已连接到特定作业或一组作业的 审批 ? 如果是这样,可以使用阶段将作业分解为需要审批的逻辑组。
  • 是否有需要长时间运行的作业? 如果管道中有一部分将具有延长的运行时,则将其划分为自己的阶段是有意义的。

步骤

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

任务

任务是在管道中定义自动化的构建基块。 任务是使用一组输入抽象的打包脚本或过程。

触发器

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

该库包括安全文件和变量组安全文件 是一种存储文件并在管道之间共享这些文件的方法。 可能需要将文件保存在 DevOps 级别,然后在生成或部署期间使用它。 在这种情况下,可以在 库中 保存文件,并在需要文件时使用它。 变量组 存储可能需要传递到 YAML 管道的值和机密,或跨多个管道可用。

关于作者

  • Dave Jarvis 为关键概念概述图形做出了贡献。