Azure Pipeline排除分支后仍触发PR?feat/*分支触发问题求解
解决Azure Pipeline在PR时意外触发的问题
问题原因
你的流水线目前只配置了CI触发器(trigger字段),但PR触发属于独立的PR触发器(pr字段)。Azure DevOps默认会对未显式配置pr字段的流水线,开启所有分支的PR触发——只要PR的修改路径匹配你trigger里的包含规则,就会触发这条流水线,这就是你看到feat/*分支PR时流水线被触发的原因。
解决方案
你可以通过显式配置pr字段来控制PR触发行为,以下是两种常用方案:
方案1:完全禁用该流水线的PR触发
如果这条流水线不需要在任何PR场景下运行,直接添加pr: none即可彻底禁止PR触发:
trigger: paths: include: - src/Services/TestServices - src/BuildingBlocks/HealthChecks - src/BuildingBlocks/Monitoring - src/BuildingBlocks/Common - src/BuildingBlocks/MessagingBus pr: none # 禁用所有PR触发 resources: - repo: self extends: template: '/src/buildTemplate.yml'
方案2:精准排除feat/*分支的PR触发
如果需要保留部分PR触发场景,仅排除feat/*分支作为源的PR,可以配置pr.branches的排除规则:
trigger: paths: include: - src/Services/TestServices - src/BuildingBlocks/HealthChecks - src/BuildingBlocks/Monitoring - src/BuildingBlocks/Common - src/BuildingBlocks/MessagingBus pr: branches: exclude: - feat/* # 排除所有feat/*分支发起的PR resources: - repo: self extends: template: '/src/buildTemplate.yml'
注意:模板中的
trigger配置仅控制分支推送时的CI触发,不会影响PR触发逻辑,PR触发必须通过pr字段单独配置。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

