新建releases/*分支时触发Azure Pipeline的配置问题
问题根因
Azure DevOps 自带的YAML分支触发器默认仅当目标分支上检测到新提交(存在内容差异)时才会触发流水线。你从master主干新建releases/*分支时,新分支的最新提交和master的最新提交完全一致,没有内容变更,因此现有配置不会触发流水线。
可行解决方案
方案1:配置服务挂钩监听分支创建事件(最稳定)
这是最符合原生逻辑的方案,无需修改现有分支操作规范:
- 进入Azure DevOps项目设置页,找到「服务挂钩」选项,点击新建订阅
- 服务类型选择「Web Hooks」,触发事件选择「Git 分支创建」
- 配置筛选规则:选择目标代码仓库,分支筛选规则填写
releases/* - 回调地址填写Azure DevOps管道运行REST接口,请求方式为POST,接口格式如下:
https://dev.azure.com/{你的组织名}/{你的项目名}/_apis/pipelines/{目标流水线ID}/runs?api-version=7.1-preview.1 - 请求头添加两个参数:
Content-Type: application/jsonAuthorization: Basic {你的PAT令牌Base64编码}
注意PAT需要分配「流水线 - 运行」的权限
- 请求体固定传入分支参数,指定流水线运行在新建的release分支即可。
方案2:开启UI端CI触发补充配置
如果不想配置服务挂钩,可以直接调整流水线的触发规则:
- 打开目标流水线的编辑页面,点击右上角「触发器」按钮
- 切换到「持续集成」标签页,勾选「为新分支上的首次提交运行管道」选项
- 保存配置后,新建符合
releases/*规则的分支时,哪怕没有新提交也会自动触发流水线。
注意:该配置仅保存在UI层面,不会写入YAML文件,迁移流水线时需要重新配置
方案3:创建分支的自动化流程中主动触发
如果你们的release分支是通过脚本/自动化工具创建的,可以直接在创建分支的逻辑最后调用上述管道运行REST接口触发流水线,还可以自定义传入版本号、分支名等参数,适配后续发布流程。
内容的提问来源于stack exchange,提问作者Jarek Mazur
相关产品推荐
相关产品推荐

