如何让Jenkins Gerrit Trigger忽略我的CI用户的提交?

时间:2016-06-14 09:23:31

标签: git jenkins jenkins-plugins gerrit gerrit-trigger

我希望我的代码审查工作忽略来自其他Jenkins工作的更改,例如我的发布工作。这些提交可以通过提交用户(首选)或提交注释字符串(也可接受)来识别。

基本上我遇到与问Ignore Jenkins job if commit message starts with a given string的用户相同的问题,除了我没有使用Git插件进行轮询。相反,我正在使用Gerrit Trigger plugin,它会在每个新的变更集上触发。

我相信下面的截图包含了GT插件的相关配置。

我在网上搜索过,但我找不到如何做到这一点。我找到了Git插件的这种配置,但我不能使用它,因为我们使用Gerrit,所以我们需要预先提交变更集触发而不是轮询。

Trigger on "Patchset Created", "Draft published"

3 个答案:

答案 0 :(得分:3)

Gerrit Trigger提供了一组变量,您可以在其中找到提交者的名称,提交消息等。我使用的解决方案是测试这些变量的值并结束构建作业,如果测试通过。但是如果您使用的是Jenkins V2.3或更高版本,可能会出现问题。有些变量无法通过$ in shell访问。您可以参考Jenkins V2.3发行说明来解决此问题。您可以将问号右键按到Gerrit event以查看变量列表。

答案 1 :(得分:2)

一种建议的方法是使用"ci skip" plugin

我设置了我的发布作业,在其提交消息中包含[ci skip]。

使用它时我发现它实际上仍会触发构建。但是,在检查我们的提交之后,构建将退出为" Not Built"。这意味着构建仍然使我的构建历史变得混乱,并且它仍然消耗资源来获取和转发等等,因此对我来说这是一个不太优选的解决方案。

虽然这解决了我当前的问题,但我很乐意接受其他答案,因为我对这个问题并不完全满意。

答案 2 :(得分:2)

实际上,您可以在Gerrit主题配置中使用正则表达式模式跳过作业执行。

例如,您可能不允许触发更改哪个主题具有WIP字的作业。 使用以下正则表达式^((?!WIP).)*$可以实现这一点。

以下是如何在我们的管道中实现触发器的示例

Gerrit触发器配置:

enter image description here

希望它会有所帮助。