resources.pipelines.pipelines.pipeline definition

如果有生成项目的 Azure Pipeline,则管道可以通过定义管道资源来使用这些项目。 在 Azure DevOps Server 2020 及更高版本中,还可以使用管道资源启用管道完成触发器

pipelines:
- pipeline: string # Required as first property. ID of the pipeline resource.
  project: string # Project for the source; defaults to current project.
  source: string # Name of the pipeline that produces the artifact.
  version: string # The pipeline run number to pick the artifact, defaults to latest pipeline successful across all stages; used only for manual or scheduled triggers.
  branch: string # Branch to pick the artifact. Optional; defaults to all branches, used only for manual or scheduled triggers.
  tags: [ string ] # List of tags required on the pipeline to pickup default artifacts. Optional; used only for manual or scheduled triggers.
  trigger:  # Specify none to disable, true to include all branches, or use the full syntax as described in the following examples.
    enabled: boolean # Whether the trigger is enabled; defaults to true.
    branches: branches # Branches to include or exclude for triggering a run.
    stages: [ string ] # List of stages that when matched will trigger the pipeline.
    tags: [ string ] # List of tags that when matched will trigger the pipeline.
pipelines:
- pipeline: string # Required as first property. ID of the pipeline resource.
  project: string # Project for the source; defaults to current project.
  source: string # Name of the pipeline that produces the artifact.
  version: string # The pipeline run number to pick the artifact, defaults to latest pipeline successful across all stages; used only for manual or scheduled triggers.
  branch: string # Branch to pick the artifact. Optional; defaults to all branches, used only for manual or scheduled triggers.
  tags: [ string ] # List of tags required on the pipeline to pickup default artifacts. Optional; used only for manual or scheduled triggers.
  trigger:  # Specify none to disable, true to include all branches, or use the full syntax as described in the following examples.
    enabled: boolean # Whether the trigger is enabled; defaults to true.
    branches: branches # Branches to include or exclude for triggering a run.
pipelines:
- pipeline: string # Required as first property. ID of the pipeline resource.
  project: string # Project for the source; defaults to current project.
  source: string # Name of the pipeline that produces the artifact.
  version: string # The pipeline run number to pick the artifact, defaults to latest pipeline successful across all stages; used only for manual or scheduled triggers.
  branch: string # Branch to pick the artifact. Optional; defaults to all branches, used only for manual or scheduled triggers.

引用此定义的定义: resources.pipelines

属性

pipeline 字符串。 作为第一个属性是必需的。
管道资源的 ID。 可接受的值:[-_A-Za-z0-9]*。

project 字符串。
源的项目;默认为当前项目。

source 字符串。
生成项目的管道的名称。 如果管道包含在文件夹中,请包含文件夹名称,包括前导 \,例如 \security pipelines\security-lib-ci。 此属性不区分大小写,如果名称包含空格,则不需要引号。 如果有多个具有相同名称的管道,则必须指定文件夹路径。

version 字符串。
用于选取项目的管道运行编号,默认为跨所有阶段成功的最新管道;仅用于手动或计划的触发器。

branch 字符串。
用于选取项目的分支。 选;默认为所有分支,仅用于手动或计划的触发器。

tags 字符串列表。
管道上用于拾取默认项目的标记列表。 选;仅用于手动或计划的触发器。

triggerresources.pipelines.pipeline.trigger
指定 none 以禁用,指定 true 以包括所有分支,或使用完整语法,如以下示例中所述。

注解

注意

pipeline: 指定管道资源的名称。 在引用其他管道部分的管道资源时(例如使用管道资源变量或下载工件时),请使用此处定义的标签。

有关管道资源触发器中 和 tags 的详细信息stages,请参阅管道完成触发器

有关管道资源触发器的详细信息,请参阅 管道完成触发器

管道资源触发器语法

注意

在确定是否因完成一个管道完成而运行另一个管道时,管道完成触发器使用手动和计划生成的默认分支设置来确定要评估哪个分支的 YAML 管道版本的分支筛选器。 默认情况下,此设置指向存储库的默认分支。 有关详细信息,请参阅 管道完成触发器 - 分支注意事项

可通过多种方式在管道资源中定义触发器。 若要在引用管道的任何运行完成时触发运行,请使用 trigger: true

resources:
  pipelines:
  - pipeline: source-pipeline
    source: TriggeringPipeline
    trigger: true

若要禁用管道资源触发器,请将 值 none指定为 。

resources:
  pipelines:
  - pipeline: source-pipeline
    source: TriggeringPipeline
    trigger: none

若要配置分支筛选器,请使用完整语法。 可以将分支筛选器指定为要包括的分支列表,或指定为要包含的分支列表,以及要排除的分支列表。

若要指定要包含和排除的分支列表,请使用以下 trigger 语法。

resources:
  pipelines:
  - pipeline: source-pipeline
    source: TriggeringPipeline
    trigger:
      branches:
        include:
        - main
        - develop
        - features/*
        exclude:
        - features/experimental/*

若要指定要包含的分支列表(不排除),请省略 exclude 值,或使用以下语法指定要直接包含在 后面的 branches分支列表。

resources:
  pipelines:
  - pipeline: source-pipeline
    source: TriggeringPipeline
    trigger:
      branches:
      - main
      - develop

若要按阶段或标记进行筛选,请使用以下 trigger 语法。

resources:
  pipelines:
  - pipeline: source-pipeline
    source: TriggeringPipeline
    trigger:
      branches: # Branches to include
      tags: # List of tags that when matched will trigger the pipeline. 
      - release25
      stages: # List of stages that when complete will trigger the pipeline. 
      - build

有关详细信息,请参阅管道完成触发器

重要

定义资源触发器时,如果资源管道资源来自当前管道所在的同一存储库,则触发将遵循引发事件的同一分支和提交。 但是,如果管道资源来自不同的存储库,则当前管道将在手动和计划生成的默认分支设置所指定的分支上触发。 有关详细信息,请参阅管道完成触发器的分支注意事项

管道资源元数据作为预定义变量

在每次运行中,管道资源的元数据作为以下预定义变量可供所有作业使用。 这些变量在运行时可供管道使用,因此不能在管道编译时计算的 模板表达式中使用。

resources.pipeline.<Alias>.projectName
resources.pipeline.<Alias>.projectID
resources.pipeline.<Alias>.pipelineName
resources.pipeline.<Alias>.pipelineID
resources.pipeline.<Alias>.runName
resources.pipeline.<Alias>.runID
resources.pipeline.<Alias>.runURI
resources.pipeline.<Alias>.sourceBranch
resources.pipeline.<Alias>.sourceCommit
resources.pipeline.<Alias>.sourceProvider
resources.pipeline.<Alias>.requestedFor
resources.pipeline.<Alias>.requestedForID

重要

projectName 如果管道资源未指定值,则 变量中不存在 project 。 对于引用同一项目中的管道的管道资源,属性 project 是可选的,但如果需要,可以指定。

将 替换为 <Alias> 管道资源的 ID。 对于以下管道资源,要访问 runID 的变量为 resources.pipeline.source-pipeline.runID

resources:
  pipelines:
  - pipeline: source-pipeline
    source: TriggeringPipeline

当管道由其管道资源之一触发时,除了上一个列表中的变量之外,还会设置以下变量。

变量
Build.Reason ResourceTrigger
Resources.TriggeringAlias 管道资源的名称,如 source-pipeline 上一示例中的名称。
Resource.TriggeringCategory pipeline

以下示例具有两个管道资源。

resources:
 pipelines:
   - pipeline: source-pipeline
     source: PipelineTriggerSource
     project: FabrikamFiber
     trigger: true
   - pipeline: other-project-pipeline
     source: PipelineTriggerFromOtherProject
     project: FabrikamRepo
     trigger: true

trigger: none # Only trigger with pipeline resource trigger

pool:
  vmImage: ubuntu-latest

- bash: echo $(resources.pipeline.source-pipeline.projectName)
- bash: printenv | sort

运行此管道时,第一个 bash 任务输出 projectName 名为 source-pipeline的管道资源的 ,即 FabrikamFiber

第二个 bash 任务输出任务可用的所有环境变量,包括本部分所述的管道资源变量。 列出环境变量通常不会在生产管道中完成,但它可用于故障排除。 在此示例中,有两个管道资源,输出包含以下两行。

RESOURCES_PIPELINE_OTHER-PROJECT-PIPELINE_PROJECTNAME=FabrikamRepo
RESOURCES_PIPELINE_SOURCE-PIPELINE_PROJECTNAME=FabrikamFiber

注意

系统变量和用户定义的变量将作为平台的环境变量注入。 当变量转换为环境变量时,变量名称变为大写,句点变为下划线。 例如,变量名称 any.variable 变为 ANY_VARIABLE

有关使用变量和变量语法的详细信息,请参阅 了解变量语法指定条件表达式

可以使用 download 任务来使用管道资源中的工件。 请参阅 steps.download 关键字 (keyword) 。

示例

resources:
  pipelines:
  - pipeline: MyAppA
    source: MyCIPipelineA
  - pipeline: MyAppB
    source: MyCIPipelineB
    trigger: true
  - pipeline: MyAppC
    project:  DevOpsProject
    source: MyCIPipelineC
    branch: releases/M159
    version: 20190718.2
    trigger:
      branches:
        include:
        - main
        - releases/*
        exclude:
        - users/*

另请参阅