3

我为 Gerrit 安装了 Rabbit MQ 插件,并配置了 Gerrit 以将流事件发送到队列。我在我的 Jenkins 中安装了 Gerrit Trigger 插件和 Rabbit MQ 消费者插件,并创建了一个测试作业来触发基于 Gerrit 事件的构建。

Gerrit 将事件推送到 Rabbit MQ 队列。Jenkins 作业应该从 Rabbit MQ 队列接收 gerrit 事件并为每个事件进行构建。

问题是 Jenkins 作业(测试作业)被触发两次,而不是每个 gerrit 事件触发一次,并且一个事件发生两次构建。

似乎由于 Rabbit MQ 队列中的 gerrit 事件触发了一个构建,而由于来自配置的 gerrit 服务器的 gerrit 事件触发了同一作业的另一个构建。

我试图搜索互联网,但没有找到解决方案。

我跟着这个教程.. https://docs.google.com/presentation/d/10n0A6BoyEVBsU4t-edW58Nq5kuefmcIZFBAssxxQoMU/htmlpresent

Jekin 中的 Gerrit 触发器插件配置

// 未完成配置

 <name>local-gerrit</name>
<gerritHostName>10.xxx.yy.zz</gerritHostName>
<gerritSshPort>29418</gerritSshPort>
<gerritFrontEndUrl>http://10.xxx.yy.zz:8010/</gerritFrontEndUrl>

Rabbit MQ 消费者插件配置 Jenkins

<?xml version='1.0' encoding='UTF-8'?>
<org.jenkinsci.plugins.rabbitmqconsumer.GlobalRabbitmqConfiguration plugin="rabbitmq-consumer@2.7">
  <urlValidator>
    <options>8</options>
    <allowedSchemes>
      <string>amqp</string>
      <string>amqps</string>
    </allowedSchemes>
  </urlValidator>
  <enableConsumer>true</enableConsumer>
  <serviceUri>amqp://10.xxx.yy.zz</serviceUri>
  <userName>guest</userName>
  <userPassword></userPassword>
  <watchdogPeriod>60000</watchdogPeriod>
  <consumeItems>
    <org.jenkinsci.plugins.rabbitmqconsumer.RabbitmqConsumeItem>
      <appId>gerrit</appId>
      <queueName>jenkin-queue</queueName>
    </org.jenkinsci.plugins.rabbitmqconsumer.RabbitmqConsumeItem>
  </consumeItems>
  <enableDebug>false</enableDebug>
</org.jenkinsci.plugins.rabbitmqconsumer.GlobalRabbitmqConfiguration>

对此的任何帮助表示赞赏。提前致谢。

4

1 回答 1

0

这可能是因为 Gerrit Hook 可能会远程触发您的 Jenkins 作业。(如果您在 gerrit 钩子中有配置)

于 2016-07-12T09:33:51.787 回答