Bamboo如何配置仅master分支触发部署后次级构建计划
问题原因
branch-overrides配置不生效是Bamboo的固有机制限制:该配置块仅能覆盖SCM轮询、代码推送、定时触发这类和分支代码强绑定的触发器规则,after-deployment属于跨项目事件类全局触发器,完全不受分支覆写逻辑管控——既不会识别你写在master分支覆写段内的触发器配置,默认触发时也不会做分支过滤,会给计划下所有启用的分支都创建构建,直接导致功能分支被误触发。
正确配置方案
方案1:使用触发器分支过滤(Bamboo 7.0及以上版本支持)
保留全局级别的after-deployment触发器,给每个触发器增加分支匹配条件,仅允许事件命中master分支时触发构建,配置示例如下:
triggers: - after-deployment: deployment-project: My Application environment: Dev conditions: - branch: name: equals: master - after-deployment: deployment-project: My Application environment: QA conditions: - branch: name: equals: master branch-overrides: []
配置说明:
- 触发器必须放在全局
triggers段,写入branch-overrides块内的部署触发器不会被Bamboo识别加载 conditions块会在收到部署完成事件时做前置校验,仅当匹配分支名为master时才会创建构建,其余分支的触发请求会被直接拦截- 后续如果需要增加其他受信任的正式分支,可将等值匹配改为正则匹配,例如使用
matches: ^(master|release/.*)$即可同时匹配主分支和标准格式的发布分支
方案2:通过部署后置任务定向触发(兼容所有Bamboo版本)
如果你的Bamboo版本低于7.0不支持触发器条件,可以直接从部署端做触发控制,绕开全局触发器的分支过滤问题:
- 清空次级构建计划内的所有
after-deployment触发器,直接设置triggers: [] - 进入主应用
My Application的Dev、QA环境部署配置页,在部署成功的后置任务列表中添加「Trigger plan」类型任务 - 任务配置中选中你的次级构建计划,触发分支固定选择
master,不要勾选「触发与部署来源匹配的分支」类选项 - 保存部署配置后立即生效
这个方案逻辑最直接:既然所有部署操作本身就从master分支发起,部署完成后直接定向触发次级计划的master分支构建,从源头就不会产生指向功能分支的触发请求,不需要额外过滤逻辑,完全不会出现误触发。
内容的提问来源于stack exchange,提问作者Yan Sklyarenko
相关产品推荐
相关产品推荐

