Azure DevOps 管道触发器不会触发

Jan*_*her 6 azure-devops azure-pipelines

问题

Azure DevOps 有一项功能(在此处记录),可在从另一个管道完成时触发管道。这在测试组织中工作正常,但在我们的主要组织中不起作用。在组织、项目、存储库甚至分支级别上可能会有一些东西,但我目前被困住了,任何帮助将不胜感激!

管道

Pipeline B当管道Pipeline A完成时管道应该自动运行。

文件pipeline-a.yamlPipeline A

pool:
  vmImage: 'ubuntu-latest'

steps:
- script: echo Hello, world!
  displayName: 'Do something'
Run Code Online (Sandbox Code Playgroud)

文件pipeline-b.yamlPipeline 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'
Run Code Online (Sandbox Code Playgroud)

组织

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

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

发现

  • 在两个组织中手动启动时,两个管道都运行良好
  • 两个组织的所有预览功能在组织和个人级别上都是平等的,包括多阶段管道功能。
  • 生产组织在 master 上有分支策略,而测试组织没有策略。我没有看到与管道触发器的联系,也没有对此进行调查。
  • 安装扩展以使它们在测试和生产中相等并没有什么区别。
  • 测试组织似乎处于缓慢环中,并且仍在 Sprint 161 上。编辑:组织更新到 Sprint 162 后问题仍然存在。
  • 当我使用经典编辑器并手动创建构建完成触发器时,它会起作用。但这会覆盖 YAML 管道触发器,我不想这样做(我想生成管道及其触发器)

Eri*_*ith 8

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

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

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

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

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


Jan*_*her 6

删除并重新添加管道就成功了。所以保留 YAML 文件但删除管道并再次添加它。

Azure DevOps 后端似乎时不时地忽略了管道之间的关系。