stage.stage definition

阶段是相关作业的集合。 默认情况下,阶段按顺序运行。 除非通过 dependsOn 属性指定,否则每个阶段仅在上一阶段完成之后开始。

stages:
- stage: string # Required as first property. ID of the stage.
  displayName: string # Human-readable name for the stage.
  pool: string | pool # Pool where jobs in this stage will run unless otherwise specified.
  dependsOn: string | [ string ] # Any stages which must complete before this one.
  condition: string # Evaluate this condition expression to determine whether to run this stage.
  variables: variables | [ variable ] # Stage-specific variables.
  jobs: [ job | deployment | template ] # Jobs which make up the stage.
  lockBehavior: string # Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests.
  templateContext: # Stage related information passed from a pipeline when extending a template.
stages:
- stage: string # Required as first property. ID of the stage.
  displayName: string # Human-readable name for the stage.
  pool: string | pool # Pool where jobs in this stage will run unless otherwise specified.
  dependsOn: string | [ string ] # Any stages which must complete before this one.
  condition: string # Evaluate this condition expression to determine whether to run this stage.
  variables: variables | [ variable ] # Stage-specific variables.
  jobs: [ job | deployment | template ] # Jobs which make up the stage.

引用此定义的定义: 阶段

属性

stage 字符串。 作为第一个属性是必需的。
阶段的 ID。

displayName 字符串。
阶段的可读名称。

pool
除非另行指定,否则将运行此阶段中的作业的池。

dependsOn string |字符串列表。
必须在此阶段之前完成的任何阶段。 默认情况下,阶段按管道中定义的顺序按顺序运行。 如果阶段不应依赖于管道中的上一个阶段,请指定 dependsOn: [] 该阶段。

condition 字符串。
计算此条件表达式以确定是否运行此阶段。

variables变量
阶段特定的变量。

jobs作业
构成阶段的作业。

lockBehavior 字符串。
此阶段的行为锁请求应与其他独占锁请求相关。 顺序 |runLatest。

templateContext templateContext。
暂暂在扩展模板时从管道传递的相关信息。 有关 的详细信息templateContext,请参阅扩展 YAML 管道模板现在可以传递阶段、作业和部署的上下文信息,以及模板 - 使用 templateContext 将属性传递给模板

备注

使用审批检查来手动控制阶段应何时运行。 这些检查通常用于控制到生产环境的部署。

检查是可供资源所有者使用的一种机制。 他们控制管道中的阶段何时使用资源。 作为资源(如环境)的所有者,可以定义在使用资源的阶段启动之前所需的检查。

目前,环境支持手动审批检查。 有关详细信息,请参阅审批

独占锁

在 YAML 管道中,检查用于控制 受保护资源上阶段的执行。 可以使用的常见检查之一是独占锁检查。 此检查仅允许从管道进行单个运行。 当多个运行尝试同时部署到环境时,检查会取消所有旧运行,并允许部署最新的运行。

可以使用 属性配置独占锁检查lockBehavior的行为,该属性具有两个值:

  • runLatest - 只有最新的运行获取资源的锁。 如果未 lockBehavior 指定 ,则为默认值。
  • sequential - 所有运行都按顺序获取受保护资源的锁。

如果发布是累积版本的,并且包含以前运行的所有代码更改,则取消旧运行是一种很好的方法。 但是,某些管道中的代码更改不是累积的。 通过配置 lockBehavior 属性,可以选择允许所有运行继续并按顺序部署到环境,或保留以前取消旧运行并仅允许最新运行的行为。 值 sequential 表示所有运行都按顺序获取受保护资源的锁。 值 runLatest 表示只有最新的运行才能获取资源的锁。

若要将独占锁检查用于sequential部署或 runLatest,请执行以下步骤:

  1. 在环境 (或其他受保护资源) 上启用独占锁检查。
  2. 在管道的 YAML 文件中,指定名为 lockBehavior的新属性。 可以针对整个管道或给定阶段指定此值:

在舞台上设置:

stages:
- stage: A
  lockBehavior: sequential
  jobs:
  - job: Job
    steps:
    - script: Hey!

在管道上设置:

lockBehavior: runLatest
stages:
- stage: A
  jobs:
  - job: Job
    steps:
    - script: Hey!

示例

此示例一个接一个地运行三个阶段。 中间阶段并行运行两个作业。

stages:
- stage: Build
  jobs:
  - job: BuildJob
    steps:
    - script: echo Building!
- stage: Test
  jobs:
  - job: TestOnWindows
    steps:
    - script: echo Testing on Windows!
  - job: TestOnLinux
    steps:
    - script: echo Testing on Linux!
- stage: Deploy
  jobs:
  - job: Deploy
    steps:
    - script: echo Deploying the code!

此示例并行运行两个阶段。 为简洁起见,省略了作业和步骤。

stages:
- stage: BuildWin
  displayName: Build for Windows
- stage: BuildMac
  displayName: Build for Mac
  dependsOn: [] # by specifying an empty array, this stage doesn't depend on the stage before it

请参阅

详细了解阶段条件变量