Jenkins gerrit在建造时不会触发我的变化

时间:2013-09-27 21:51:20

标签: jenkins jenkins-plugins gerrit

我已经使用gerrit触发器插件配置了jenkins来验证我们推送到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触发了构建。

我也从jenkins工作区验证过,它不包含我的更改。

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

4 个答案:

答案 0 :(得分:17)

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

以下是配置Gerrit触发器的步骤(从内存中,希望一切正常):

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

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

    enter image description here

答案 1 :(得分:9)

您必须将Choosing Strategy更改为Gerrit Trigger

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

这将导致Git为您的构建

获取正确的版本

答案 2 :(得分:2)

我正在使用 Jenkins 2.15 ,并且遇到了该问题,并通过以下设置得到解决。 在Git Advances中添加Refspec:$GERRIT_REFSPEC 要建立的分支:$GERRIT_BRANCH

在“其他行为”部分中,选择Strategy for choosing what to build,然后选择gerrit Trigger

答案 3 :(得分:1)

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

myfunction(false); branch

$GERRIT_REFSPECREFSPEC