Azure DevOps管道触发器不会触发

时间:2020-01-06 16:13:44

标签: azure-devops azure-pipelines

问题

Azure DevOps具有一项功能(记录在here中),可以在另一个管道完成时触发管道。 这在测试组织中可以正常工作,但在我们的主要组织中则无法使用。 在组织,项目,存储库甚至分支级别上可能都有某些内容,但是我目前仍然受困,将不胜感激!

管道

管道Pipeline B完成后,管道Pipeline A应该自动运行。

pipeline-a.yaml的文件Pipeline A

pool:
  vmImage: 'ubuntu-latest'

steps:
- script: echo Hello, world!
  displayName: 'Do something'

pipeline-b.yaml的文件Pipeline B

trigger: none

pool:
  vmImage: 'ubuntu-latest'

resources: 
  pipelines:
  - pipeline: pipeline-a
    source: 'Pipeline A'
    branch: master
    trigger: 
      branches:
      - master

steps:
- script: echo Hello, world!
  displayName: 'Do something'

组织

在我的测试组织中,上述管道运行得很不错。这意味着Pipeline A在提交时运行,完成后Pipeline B自动运行。

在我们的生产组织中,Pipeline B不会自动运行。

发现

  • 在两个组织中手动启动时,两个管道都运行良好
  • 两个组织在组织和个人层面上的所有预览功能均相同,包括多阶段管道功能。
  • 生产组织在主数据库上具有分支策略,而测试组织没有策略。我没有看到与管道触发器的联系,也没有对此进行调查。
  • 安装扩展程序以使其在测试和生产环境中完全相同。
  • 测试组织似乎位于slow ring中,并且仍在Sprint 161上。编辑:该组织更新至Sprint 162后,问题仍然存在。
  • 当我使用经典编辑器并手动创建构建完成触发器时,它可以工作。但这会覆盖YAML管道触发器,而我不想这样做(我想生成管道及其触发器)

2 个答案:

答案 0 :(得分:3)

删除并重新添加管道可以解决问题。因此,保留YAML文件,但删除管道并再次添加。

Azure DevOps后端似乎时不时丢失管道之间的关系。

答案 1 :(得分:0)

我们今天解决了类似的问题。将Pipeline-A定义为Pipeline-B会消耗的资源。

消耗管道从未被触发。删除和重新创建管道对我们不起作用。该工作\管道是全新的,位于功能分支上。最终变得很重要。

最终的解决方法是将功能分支定义为Default branch for manual and scheduled builds中的Pipeline-B。您可以在Pipeline -> Edit -> triggers -> yaml-> Get Sources中找到该设置。期望在将此代码升级到main分支时,我们需要更新设置。

因此,似乎用于手动和计划构建的默认分支会更好地命名

用于手动和计划构建以及管道完成触发器的默认分支