我有一个关于管道资源触发器的问题,我在项目的单个repo中有3个分支。Repo名称:test-repo分公司名称:
- vishnu/branch1
- branch1.yaml
- vishnu/branch2
- branch2.yaml
- vishnu/branch3
- child.yaml
为所有3个管道创建的管道命名如下:
poc_branch1 (branch1.yaml)
poc_branch2 (branch2.yaml)
poc_child (child.yaml)
child.yaml
包含如下所示的资源触发器:
resources:
pipelines:
- pipeline: poc_branch1
source: poc_branch1 # name of the pipeline that produces an artifact.
trigger:
branches:
include:
- refs/heads/vishnu/branch1
- pipeline: poc_branch2
source: poc_branch2 # name of the pipeline that produces an artifact.
trigger:
branches:
include:
- refs/heads/vishnu/branch2
# -------------------------------------------------------------------------
trigger: none
pr: none
stages:
- stage: Consume_Artifact
displayName: Consume Artifact From Main Pipeline
jobs:
- job: Consume
displayName: Consume
steps:
- task: PowerShell@2
displayName: 'Extracting the Triggered Pipeline alias'
inputs:
targetType: inline
script: |
Write-output "This pipeline has been triggered by: $(Resources.TriggeringAlias)"
理想情况下,poc_child
管道应该在poc_branch1或poc_branch2管道完成后触发。但这并没有发生。
原因是什么?
如果我保留child。在po_branch1中的Yaml。存在Yaml文件。然后指着孩子。到poc_child管道,触发器工作。
感谢您的建议。
原因是什么?
原因是当两个管道在同一个存储库中时,触发管道在同一分支中的触发管道版本运行。这意味着,当poc_branch1基于branch1完成时,poc_child也将被触发并基于branch1运行。在你的场景中,孩子。Yaml只在分公司开店,但没有其他的孩子。分支1或分支2中的Yaml版本。因此,即使branch1和branch2触发了poc_child, poc_child也不能基于branch1和branch2运行。您可以参考分支考虑事项了解详细信息。
如果我保留child。在po_branch1中的Yaml。Yaml文件存在。然后指着孩子。到poc_child管道,触发器工作。
不清楚。如果你有孩子。branch1和branch3中的Yaml和完成的管道都满足资源触发器过滤器,那么,它应该是预期的。请分享更多的细节信息。