目录
gerrit trigger介绍
gerrit trigger是一个Jenkins插件,用于监控gerrit服务器的事件流(stream events),根据提交状态来触发一系列动作比如下载代码、编译、给gerrit提交打分等等。
1、安装gerrit trigger插件
This plugin integrates with Gerrit code review.
安装插件可以直接在Jenkins->manage Jenkins->plugin manager中在线安装,需要注意的是,gerrit trigger有很多个版本,根据网上的说法,目前最新的2.3.0以上版本无法正常使用,不能触发gerrit事件。所以尽量安装以前的比较稳定的版本,这里我使用的是2.29版本,经过验证是可以正常使用的。此处踩过的坑
jenkins版本也尽量使用稳定的版本,我使用的是 2.204.1版本,在About Jenkins中可以查看版本号。
另外,如果当前的Jenkins版本无法通过网络下载正常的gerrit trigger版本,可以通过手动下载的方式。下载方式是进入Jenkins->manage Jenkins->plugin manager->Advanced->Upload Plugin,手动选择本地的插件后upload。
下载gerrit trigger的地址:
https://updates.jenkins-ci.org/download/plugins/gerrit-trigger/
注意:在手动安装过程中可能出现提示当前文件正在被使用的问题,如果之前安装过gerrit trigger,需要卸载以后,重启Jenkins,在Jenkins重启的过程中,去删除之前安装遗留的文件,否则无法删除,提示正在使用。
文件目录一般在安装目录下面的.Jenkins/plugin中,所有与gerrit trigger相关的文件或目录都要删除掉,不然可能仍然出现安装失败的问题。
目录gerrit-trigger,文件gerrit-trigger.bak、gerrit-trigger.jpi,删除完以后等Jenkins重启,最好是等Jenkins启动完毕后过几分钟再安装,此处都是踩过的坑。
2、安装辅助插件
This plugin integrates Gerrit Code Review with Jenkins.
This plugin allows use of repo as an SCM tool. A repo binary is required.
REPO插件用来下载以及管理gerrit代码,非常有用。
3、配置gerrit server
gerrit trigger插件安装成功以后,在Jenkins设置界面能看到gerrit trigger选项,能够配置gerrit server。
点击add new server,先配置Gerrit Connection Setting:
其中hostname是gerrit的网页地址,frontend URL就是https链接,端口默认为gerrit中的29418,不同的服务器可能不一样;email和proxy可以不填写,SSH keyfile一定是已经配置到了gerrit上面;最后SSH Keyfile Password一定要删除,如果有的话也可以填上,不然会出现无法连接的情况;最后点击test connection出现success表示连接成功,配置没有问题。username为gerrit账号,这个账号需要有监听gerrit事件流的权限,使用SSH命令查看当前用户是否有权限监听Gerrit事件流:
ssh -p 29418 cnbwu@Gerrit-URL gerrit stream-events
接下来需要设置REST API,点击advanced一直往下拉可以看到配置项,勾选Use REST API,填写Gerrit HTTP Username和Gerrit HTTP Password,这个账号仍然是gerrit账户,密码是通过gerrit界面账户配置生成的:
如图,点击generate password即可生成;配置好以后点击Test Rest Connection测试是否能够正常连接,这个配置一般只要账号密码没有问题都可以成功连接。
其它选项可以不用配置,配置完毕后保存,在gerrit server列表中会出现新创建的server名称,点击上面的小圆点可以启动server服务,再次点击可以关闭:
小圆点显示为蓝色表示启动成功,可以使用了。
3、新建job并配置gerrit trigger
新建job不用多说,在job中找到Source Code Management,选中Gerrit Repo,这个选项是要在安装了REPO插件以后才能看到的。这个配置项比较多,不再一一说明:
其中IgnoreChanges一般填写manifest那个仓库,因为这个仓库主要是管理manifest文件,和编译关系不大;Group、Jobs、Depth不用填写,其余根据配置情况填写。
接下来配置Gerrit Trigger,找到Build Triggers中的Gerrit event,选中后会出现配置界面,server就是刚刚新建的server名称;trigger on是触发机制,可以有多种选择,根据项目实际情况来定
需要注意的是Dynamic Trigger Configuration,这里定义了所要触发的仓库与分支,如果前面的仓库选择类型的是path,那么后面的pattern选择要以**来匹配或者输入仓库的路径,否则会出现无法触发gerrit trigger的情况:
这个配置好以后,gerrit trigger的配置基本完成,接下来可以验证这个配置是否有效。在gerrit上面提交一个patch,如果配置成功,那么会自动触发新建的job,进行代码的更新,如果需要cherry pick代码以及编译,需要配置脚本来完成,这里不再多说。
编译状态在Jenkins上面显示如下,会自动显示触发的提交是哪一个,job执行完以后会在相应的提交上面添加comment,非常实用: