我已经使用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工作区验证过,它不包括我的更改 .
对不起,如果我错过任何提及的信息 . 如果我在这里遗漏任何东西,请告诉我,请帮助我 .
3 回答
您必须将
Choosing Strategy
更改为Gerrit Trigger
转到作业的配置页面,然后单击
git
部分下的第二个Advanced
按钮 . 几乎在底部有一个Choosing Strategy
,您需要更改为Gerrit Trigger
这将导致Git为您的构建获取正确的版本
使用Jenkins 1.532.2 Git客户端插件1.6.2 Git插件2.0.1 Git Trigger 2.11.0
以下是配置Gerrit触发器的步骤(从内存中,希望一切正常):
安装插件"Gerrit Trigger","Git Plugin"和"Git Client Plugin"
在主jenkins配置(HOME-> Manage Jenkins)中,单击Gerrit Trigger .
创建服务器并进行配置 . 使用"Test Connection"确保它有效 .
最后,在"Control"下按"start"(不知道那是做什么,或者是否真的需要,但我这样做了) .
转到项目的配置(MYPROJECT-> Configure)
在"Build Triggers"下查看"Gerrit event"
在新添加的菜单中,选择您的服务器,触发器等 .
对于Gerrit项目,我使用"Plain"和"MYPROJECT"作为模式
对于Branch,我使用"Path"和"**"作为模式(构建所有分支)
在"Source Code Management"下(从我的界面中的触发器开始),单击"Git"
设置存储库URL,这里$ USER匹配给我,但是否则写正确的用户$ GERRIT_SCHEME:// $ USER @ $ GERRIT_HOST:$ GERRIT_PORT / $ GERRIT_PROJECT
指定分支:$ GERRIT_BRANCH
在右侧的"Repositories"下,单击高级,对于"Refspec"输入$ GERRIT_REFSPEC
点击下面的添加,然后选择"Strategy for choosing what to build"
选择"Gerrit Trigger"
不是很直观,但它应该工作 . 我建议确保正在构建正确的SHA1 ID .
If run into Error stderr: fatal: Couldn't find remote ref $GERRIT_REFSPEC
修复Lewis answer中的小问题,将值更改为以下内容以确保构建最新的SHA1 .
branch
:$GERRIT_REFSPEC
REFSPEC
:$GERRIT_REFSPEC:$GERRIT_REFSPEC