基于这篇文章从另一个管道触发Azure Devops管道,我尝试将依赖管道配置为仅在源管道由标签推送触发时运行。以下是两个管道的配置:
trigger:
branches:
include: # branch names which will trigger a build
- main
tags:
include:
- '*'
pr: none
steps:
# required to cause pipeline triggering downstream
- task: CopyFiles@2
inputs:
contents: $(System.DefaultWorkingDirectory)/**/*.yml
targetFolder: $(Build.ArtifactStagingDirectory)
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: $(Build.ArtifactStagingDirectory)
artifactName: dummy-$(Build.BuildId)
trigger: none
pr: none
resources:
pipelines:
- pipeline: source
# project: Pipelining
source: source
trigger:
branches:
include:
- main
tags:
- '*'
steps:
- checkout: none
- script: echo 'triggered depends'
结果是depends pipeline没有被触发。
我尝试调整依赖管道的标记触发器配置,旨在指定特定标记,而不是按照 Azure Pipelines YAML 架构上的文档使用通配符“*”https://learn.microsoft.com/en -us/azure/devops/pipelines/process/resources?view=azure-devops&tabs=schema#define-a-pipelines-resource.
但是,我不确定Azure Pipelines是否支持在触发另一个管道后仅根据标签触发管道,或者标签是否主要用于过滤触发事件。
如果我没记错的话,像
*
这样的通配符可以用来过滤分支,但不能用来过滤标签。
所以,而不是:
resources:
pipelines:
- pipeline: source
# project: Pipelining
source: source
trigger:
branches:
include:
- main
tags:
- '*'
尝试:
resources:
pipelines:
- pipeline: source
# project: Pipelining
source: source
trigger:
branches:
include:
- main
tags:
- mytag
请注意,如果您包含多个标签,则只有当所有标签都添加到源管道时才会触发构建。