Bamboo中gradle-release-plugin执行release任务引发无限循环求助
解决Bamboo + Gradle Release Plugin的构建无限循环问题
这个问题我之前帮同事排查过,核心就是Gradle Release Plugin执行后生成的自动提交被Bamboo的触发器检测到,反复触发构建,形成了循环。下面给你几个靠谱的解决思路:
方法1:直接在Bamboo触发器里排除Release插件的自动提交
这是最直接的方案,不需要修改Gradle配置,只需要调整Bamboo的构建计划设置:
- 打开你的Bamboo构建计划,进入配置页面
- 找到触发器选项卡,选中你当前使用的Git触发器(比如「Repository polling」或者「Push trigger」)
- 在触发器的过滤设置里,找到「Exclude commits by message」(不同Bamboo版本可能翻译或位置略有不同,核心是按提交消息排除)
- 填入正则表达式:
^\[Gradle Release Plugin\].*- 这个正则会匹配所有以「[Gradle Release Plugin]」开头的提交消息,正好对应插件生成的两个自动提交(准备发布版本、准备下一个迭代版本的提交)
- 保存配置后,Bamboo就会忽略这些自动提交,不会再触发循环构建
方法2:自定义Gradle Release Plugin的提交消息(可选)
如果你想让提交消息更个性化,或者担心默认消息的匹配问题,可以在Gradle配置里修改提交消息前缀,再对应调整Bamboo的过滤规则:
在项目的build.gradle里添加如下配置:
plugins { id 'net.researchgate.release' version '3.0.2' // 确保你的插件版本正确 } release { scmAdapters { git { // 自定义提交消息前缀 commitMessagePrefix = '[Gradle Auto Release]' // 标签消息也可以同步修改 tagMessage = '[Gradle Auto Release] - Release tag v${version}' } } }
然后回到Bamboo的触发器配置,把排除的正则改成^\[Gradle Auto Release\].*即可。
额外注意事项
- 测试正则匹配:在Bamboo的触发器配置里,通常会有测试匹配的功能,可以输入插件生成的提交消息,验证正则是否能正确匹配
- 确认触发源:查看Bamboo的构建历史,确认每次触发构建的提交确实是Gradle Release Plugin生成的那两条,避免排除错了提交
- Webhook触发器的情况:如果用的是Git仓库的webhook触发Bamboo,有些仓库平台也可以在webhook里设置提交消息过滤,不过在Bamboo端统一处理更省心
内容的提问来源于stack exchange,提问作者DAlekperov
相关产品推荐
相关产品推荐

