子管道可以由父管道从 azure 管道中不同存储库中的不同分支触发吗?

时间:2021-06-03 06:59:02

标签: azure azure-pipelines pipeline azure-pipelines-yaml

我在 repo1 的 main 分支下创建了一个父管道。我创建了两个子管道,child1 在分支 main 下的 repo_child1 中,child2 在分支 new_branch 下的 repo_child2 中。

以下是管道的代码:

父管道代码:

    trigger: none

    pool:
     vmImage: ubuntu-latest
   
   stages:
     stage: child1
     jobs:
       job:
         steps:
           script: echo "trigger child 1 pipeline"
    
     stage: child2
     jobs:
       job:
         steps:
           script: echo "trigger child 2 pipeline"

Child1 管道

    trigger: none

    pool:
     vmImage: ubuntu-latest
   
    resources:
     pipelines:
       pipeline: 'someidforparent'
       source: 'parent'
       trigger: 
         stages:
          - child1

  stages:
    stage:
    jobs:
      job:
        steps:
          script: echo "you are in child1 pipeline"

child2 管道

    trigger: none

    pool:
     vmImage: ubuntu-latest
   
    resources:
     pipelines:
       pipeline: 'someidforparent'
       source: 'parent'
       trigger: 
         stages:
          - child2

    stages:
      stage:
      jobs:
        job:
          steps:
            script: echo "you are in child2 pipeline"

当我运行父管道时,在执行 parent 中的 child1 阶段后触发 child1 管道。但从未调用 child2 管道。

您能否帮我理解在父管道中执行阶段 child2 后未触发 child2 管道的原因是什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

<块引用>

您能否帮我理解在父管道中执行阶段 child2 后未触发 child2 管道的原因是什么?

那是因为管道文件 child2.yml 在分支 main 中不存在。

当我们设置阶段过滤器时,它会搜索触发的管道文件parent.yml,它在主分支中,然后它会搜索同一分支main中的child2.yml。这就是未触发您的 child2 位于分支 repo_child2 下的 new_branch 的原因。

要解决此问题,您可以为 child2 添加构建完成:

enter image description here