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 将属性传递给模板。
备注
有关 的详细信息templateContext
,请参阅扩展 YAML 管道模板现在可以传递阶段、作业和部署的上下文信息,以及模板 - 使用 templateContext 将属性传递给模板。
使用审批检查来手动控制阶段应何时运行。 这些检查通常用于控制到生产环境的部署。
检查是可供资源所有者使用的一种机制。 他们控制管道中的阶段何时使用资源。 作为资源(如环境)的所有者,可以定义在使用资源的阶段启动之前所需的检查。
独占锁
在 YAML 管道中,检查用于控制 受保护资源上阶段的执行。 可以使用的常见检查之一是独占锁检查。 此检查仅允许从管道进行单个运行。 当多个运行尝试同时部署到环境时,检查会取消所有旧运行,并允许部署最新的运行。
可以使用 属性配置独占锁检查lockBehavior
的行为,该属性具有两个值:
runLatest
- 只有最新的运行获取资源的锁。 如果未lockBehavior
指定 ,则为默认值。sequential
- 所有运行都按顺序获取受保护资源的锁。
如果发布是累积版本的,并且包含以前运行的所有代码更改,则取消旧运行是一种很好的方法。 但是,某些管道中的代码更改不是累积的。 通过配置 lockBehavior
属性,可以选择允许所有运行继续并按顺序部署到环境,或保留以前取消旧运行并仅允许最新运行的行为。 值 sequential
表示所有运行都按顺序获取受保护资源的锁。 值 runLatest
表示只有最新的运行才能获取资源的锁。
若要将独占锁检查用于sequential
部署或 runLatest
,请执行以下步骤:
- 在环境 (或其他受保护资源) 上启用独占锁检查。
- 在管道的 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