Atlassian Bamboo:如果特定文件有更改,则不要触发构建

9
我在Bamboo中有一个计划,当附加仓库(通过轮询)发生更改时启动。
现在,每次构建成功后,repo中的CHANGELOG文件会更新,这反过来又会触发另一个构建。如何从Bamboo的轮询中省略某些文件,以便如果发现这些文件的更改,则不会开始构建?否则,我就会进入无限循环,因为对CHANGELOG的更改会触发另一个构建,而这又会更新CHANGELOG,如此反复。
如果这不可能,还有其他可行的解决方案吗?是否可以在构建开始之前附加一个shell脚本,在检查是否需要启动新构建?
2个回答

11

实际上,这比我想象的要简单。在“计划配置”中,在“存储库”选项卡下,对于每个存储库,在“高级”下,有一个包含/排除文件的输入框,您可以自定义Bamboo用于检测更改的文件。通过在那里添加正则表达式,我解决了一切问题,并按预期工作。

Bamboo模式匹配参考:https://confluence.atlassian.com/display/BAMBOO/Pattern+matching+reference


等一下。这是Java/POSIX正则表达式还是Ant模式?我的Bamboo 6.10.4显示为正则表达式,而你指向的是Ant语法。 - Alex

2

根据Bamboo文档,如果本地工作副本和仓库副本的版本号相同,Bamboo将忽略构建触发器。

这可能并不是最好的解决方案,但您可以在作业/构建结束时添加一个额外的任务来再次更新存储库,以避免触发新的构建。

我不确定这是否会跳过在当前构建期间发生的存储库更新所引起的构建。


这是一个好主意,但不幸的是,出现了两个问题:如果在构建正在进行时发生提交,则仍会触发构建;并且通过在作业末尾添加额外的源代码检出任务,测试结果将被删除,因此 junit 解析器任务失败,导致构建失败。 - linkyndy
我不完全理解第一个问题。为什么这是个问题?你不能在junit解析器任务之后运行额外的源代码检查吗? - Luke
第一个问题是你在最后一句话中提到的。如果我从当前构建提交了某些内容,无论我是否在作业结束前添加额外的源代码检出任务,都会触发另一个构建。关于另一个问题,不行,因为当我进行第二个源代码检出时,所有东西都被删除了(因为我必须强制进行干净的构建),测试结果也被删除了。没有结果可解析,junit 任务失败,构建也失败。 - linkyndy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接