Azure DevOps 管道资源触发器不起作用

时间:2021-01-15 16:35:15

标签: azure-devops

我有一个 Azure DevOps 管道 (Pipeline1),应该在另一个管道 (Pipeline2) 完成时触发。为此,我已经实现了文档中描述的管道资源 -

但是,它根本不起作用。实际上,Pipeline2 将在创建或手动创建新 PR 时触发。我已经测试了创建新 PR、多次更新 PR 以及多次手动运行,但无论我做什么Pipeline1 都不会触发。

我尝试了 YAML 架构参考中定义的两个示例,并进一步阅读 Trigger one pipeline after another 文档,我尝试在所有分支通配符前添加 refs/heads/

我必须怎么做才能让它发挥作用?

我的尝试

没有任何 branchs 明确定义 -
resources:
  pipelines:
    - pipeline: pipeline2
      source: Pipeline2
      trigger: true
明确定义所有 branches -
resources:
  pipelines:
    - pipeline: pipeline2
      source: Pipeline2
      trigger:
        branches:
          - "*"
branches 前缀所有 refs/heads/ 通配符 -
resources:
  pipelines:
    - pipeline: pipeline2
      source: Pipeline2
      trigger:
        branches:
          - refs/heads/*

更新

遗憾的是,pipelines 资源似乎不适用于 PR。为什么会这样,我不能告诉你。

经过进一步调查后,我在 sprint 更新中偶然发现了 Incoming Webhook Service Connection。此更新是从六个月前开始的,在撰写本文时,YAML schema reference 中没有添加任何内容。

然而,事实证明这个功能只是doesn't work句号,即使它做了它看起来也只会触发管道的默认分支,这对我们没有好处(可能也没有好处对于大多数用例)。

我最终找到了一些一年前的 documentation on GitHub,但不幸的是,这似乎只能证实 Incoming Webhook Service Connection 在这种情况下对我们没有用。

2 个答案:

答案 0 :(得分:0)

对我来说是这样的

resources:        
  pipelines:
  - pipeline: build_pipeline  
    source: kmadof.devops-manual (14)
    branch: master
    trigger:
     branches:
     - '*'

steps:
- bash: env | sort
- task: Bash@3
  inputs:
    targetType: 'inline'
    script: |
      echo 'Hello world'

enter image description here

所以在你的情况下,我会试试这个:

resources:
  pipelines:
    - pipeline: pipeline2
      source: Pipeline2
      branch: master
      trigger:
        branches:
          - '*'

答案 1 :(得分:0)

Pipeline2 是由 PR 触发的,所以触发流水线运行的源分支(Build.SourceBranch)是 PR 合并分支( refs/pull/{PR_ID}/merge).

我也用你上面发布的 3 种方式进行了测试,只有第一种方式可以按预期工作。

根据我的进一步调查,管道资源触发器上的分支过滤器似乎仅适用于您可以在“Repos/Branches”页面上看到的存储库分支。这些分支具有相同的前缀“refs/heads/”。 PR 合并分支 (refs/pull/{PR_ID}/merge) 似乎不包括在内。

就您而言,第一种方法应该可行。您需要检查以下事项:

  1. 确保为“source”键指定了正确的管道名称 Pipeline2
  2. 检查Pipeline1Pipeline2 是否在同一个项目中。如果没有,请确保您已使用“project”键指定 Pipeline2 所在的正确项目,并确保这些项目在相同的组织。