Azure DevOps中PR触发CI后自动触发CD YAML流水线的实现
解决Azure DevOps中PR触发的CI无法触发CD流水线的问题
问题原因
你当前的CD流水线资源触发器仅监听CI流水线在main和features/*分支上由分支触发器或手动操作触发的运行。而PR触发的CI流水线,其运行关联的分支格式为refs/pull/{PR编号}/merge,且流水线触发原因Build.Reason为PullRequest,不在默认的资源触发器监听范围内,因此不会触发CD。
解决方案
1. 修改CD流水线的资源触发器,添加PR触发监听
更新CD流水线的resources配置,明确添加对PR触发的CI运行的监听规则:
name: Release-$(Date:yyyyMMdd)$(Rev:.r) trigger: none resources: pipelines: - pipeline: myCDpipeline source: CI trigger: branches: include: - main - features/* pullRequest: include: '*' # 监听所有PR触发的CI运行
如果仅需要监听目标分支为特定分支的PR触发的CI,可以细化pullRequest配置:
resources: pipelines: - pipeline: myCDpipeline source: CI trigger: branches: include: - main - features/* pullRequest: include: - main - release/* # 仅监听目标分支为main或release/*的PR触发的CI
2. (可选)明确CI流水线的PR触发规则
如果你的CI流水线的PR触发是通过UI配置的,建议在YAML中补充PR触发规则,避免配置冲突:
trigger: branches: include: - main - release/* exclude: - features/* # 添加PR触发配置 pr: branches: include: - main - release/* exclude: - features/* pool: vmImage: 'windows-latest'
验证
修改配置后,提交PR触发CI流水线,当CI成功完成后,CD流水线会自动触发运行。
内容的提问来源于stack exchange,提问作者Oliver Nilsen
相关产品推荐
相关产品推荐

