问题
Azure DevOps有一个功能(在此文档中记录),可以在另一个管道完成后触发管道。 在测试组织中,这很好用,但在我们的主要组织中无法正常工作。 可能是组织、项目、存储库甚至分支级别上的问题,但我目前陷入困境,需要任何帮助!
管道
当管道 Pipeline A
完成时,应自动运行管道 Pipeline B
。
管道 Pipeline A
的文件为 pipeline-a.yaml
:
pool:
vmImage: 'ubuntu-latest'
steps:
- script: echo Hello, world!
displayName: 'Do something'
管道 B 的文件 pipeline-b.yaml
:
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
不会自动运行。
发现
- 在两个组织中,当手动启动时,两个流水线都可以正常运行
- 在两个组织中,所有预览功能都相同,包括多阶段流水线功能。
- 生产组织在主分支上有分支策略,而测试组织没有策略。我没有看到与流水线触发器的关系,并且没有进行调查。
- 安装扩展程序使它们在测试和生产环境中保持一致没有任何区别。
- 测试组织似乎处于缓慢更新环境中,仍然是Sprint 161。编辑:组织更新到Sprint 162后问题仍然存在。
- 当我使用经典编辑器并手动创建构建完成触发器时,它可以正常运行。但是这将覆盖YAML流水线触发器,并且我不想这样做(我想生成流水线及其触发器)
Pipelines
> 在 Pipeline B 处从右侧的 3 点菜单中单击Edit
> 在右上角的 3 点菜单中单击Triggers
> 确保未选中“从此处覆盖 YAML 持续集成触发器”的选项。 - Jonas