14

我已经为 jenkins 配置了 gerrit 触发器插件来验证我们推送到 gerrit 的每个提交。我期待这个触发器将我的最新更改包含在原始存储库中并进行构建。但是,它只是克隆 repo 项目并在没有我更改的情况下进行编译。

下面是我在 jenkins 中对 gerrit 触发器的配置设置。

Refspec: $GERRIT_REFSPEC 
Branches to build: $GERRIT_BRANCH 
Build trigger: Gerrit event 
Trigger on: patch set created 
Gerrit project: added project and branch

下面是构建输出消息

Triggered by Gerrit: http://ci-test1/22
Building on master in workspace /var/lib/jenkins/jobs/Build_Adserver_4.7/workspace
Checkout:workspace / /var/lib/jenkins/jobs/Build_Adserver_4.7/workspace - hudson.remoting.LocalChannel@733aee56
Using strategy: Default
Last Built Revision: Revision 701a75ef38aa191ac1b806c48e6b3451671888f6 (ads/4.7)
Fetching changes from 1 remote Git repository
Fetching upstream changes from abc
Commencing build of Revision 701a75ef38aa191ac1b806c48e6b3451671888f6 (ads/4.7)
Checking out Revision 701a75ef38aa191ac1b806c48e6b3451671888f6 (ads/4.7)
[workspace] $ /bin/sh -xe /tmp/hudson1375188638196718521.sh
+ echo 'Started Build'
Started Build
+ echo ..................
..................
+ echo 'Build Finished'
Build Finished
Finished: SUCCESS

这里 701a75ef38aa191ac1b806c48e6b3451671888f6 是 repo 分支的 HEAD,而 8cbda558adcad4fb7eb714e0b3fb98a6fbf5811c 是触发构建的最新更改的 SHA-id。

我也从詹金斯工作区验证过,它不包括我的更改。

抱歉,如果我缺少任何要提及的信息。如果我在这里遗漏任何东西,请告诉我请帮助我。

4

4 回答 4

17

使用 Jenkins 1.532.2 Git 客户端插件 1.6.2 Git 插件 2.0.1 Git 触发器 2.11.0

以下是配置 Gerrit 触发器的步骤(根据记忆,希望一切正常):

  1. 安装插件“Gerrit Trigger”、“Git Plugin”和“Git Client Plugin”
  2. 在 jenkins 主配置(HOME->Manage Jenkins)中,单击 Gerrit Trigger。
  3. 创建服务器并对其进行配置。使用“测试连接”确保它正常工作。
  4. 最后,在“控制”下按“开始”(不知道它是做什么的或者它是否真的需要,但我这样做了)。
  5. 转到项目的配置(MYPROJECT->Configure)
  6. 检查“构建触发器”下的“Gerrit 事件”
  7. 在新添加的菜单中,选择您的服务器、触发器等。
  8. 对于 Gerrit 项目,我使用“Plain”和“MYPROJECT”作为模式
  9. 对于分支,我使用“路径”和“**”作为模式(构建所有分支)
  10. 在“源代码管理”下(从我的 UI 中的触发器开始),单击“Git”
  11. 设置存储库 URL,这里 $USER 匹配我,但否则写正确的用户 $GERRIT_SCHEME://$USER@$GERRIT_HOST:$GERRIT_PORT/$GERRIT_PROJECT
  12. 指定一个分支:$GERRIT_BRANCH
  13. 在右侧的“Repositories”下,单击 Advanced,对于“Refspec”,输入 $GERRIT_REFSPEC
  14. 单击右下方的添加,然后选择“选择构建内容的策略”
  15. 选择“Gerrit 触发器”

不是很直观,但它应该可以工作。我建议确保正在构建正确的 SHA1 Id。

如果遇到错误 stderr: fatal: Couldn't find remote ref $GERRIT_REFSPEC

在此处输入图像描述

于 2014-02-28T21:12:16.750 回答
10

你必须Choosing Strategy改变Gerrit Trigger

转到工作的配置页面,然后单击Advanced该部分下的第二个按钮git。几乎在底部有一个Choosing Strategy您需要更改为Gerrit Trigger

这将导致 Git 为您的构建获取正确的版本

于 2013-09-30T00:43:40.087 回答
2

我正在使用Jenkins 2.15并遇到问题并通过以下设置得到解决。在 Git Advances 添加 Refspec : $GERRIT_REFSPEC Branches to build : $GERRIT_BRANCH

在其他行为部分中选择Strategy for choosing what to build并选择gerrit Trigger

于 2019-02-26T07:11:56.013 回答
2

修复Lewis答案中的小问题,将值更改为以下值以确保构建最新的 SHA1。

branch$GERRIT_REFSPEC

REFSPEC$GERRIT_REFSPEC:$GERRIT_REFSPEC

于 2017-12-01T18:30:06.230 回答