
CodeReview实践-Gerrit自动触发JenkinsCI
Gerrit + Jenkins
背景
当前团队使用Gerrit来做代码管理、CodeReview。计划实现当review提交到了Gerrit并且review通过(merged)自动触发Jenkins流水线。以前接触Gitlab比较多,Gerrit还是第一次开始用,踩了点坑记录下来。本文主要讲述Gerrit Trigger流水线配置,关于服务器配置等细节问题暂不研究,降低复杂性。
Gerrit 配置
我们可以通过Docker的方式快速启动一个Gerrit实例,默认Gerrit使用的是HTTP 8080端口、SSH29418端口。通过CANONICAL_WEB_URL
参数指定服务器网页地址。
启动成功后,默认打开的是一个插件安装的页面,此时可以根据个人需要安装相关插件,也可以跳过。
默认登录就是admin, 创建一个Jenkins用户。
登录Jenkins用户然后配置SSH-KEY,创建ssh-key添加到jenkins用户配置中。
默认的key在JENKINS_HOME目录中/var/jenkins_home/.ssh/id_rsa
。
这里使用的是id_rsa.pub,复制文件内容,然后添加到Gerrit Jenkins用户中。(记得点击ADD)
将Jenkins用户加入Non-interactive Users
组。BROWSE>Groups>Non-Interactive Users>Members
。
创建一个仓库,然后简单的设置下repo权限:
Gerrit 2.7+ 创建一个组Event Streaming Users
,将Jenkins用户加入。
设置All-projects
access 权限, BROWSE> repos>All-Projects>Access>Global Capabilities >Stream Events
。
到此,Gerrit配置基本上已经完成了,页面样式很简洁。
Jenkins配置
首先我们安装Gerrit Hook插件,然后进入系统管理会看到gerrit的图标。
Connection error : com.jcraft.jsch.JSchException: Auth fail 错误一般是ssh-key问题。
在流水线项目中添加Gerrit Trigger
.
Ok,Jenkins的配置完成了。接下来开始测试自动触发。
创建codereview
merge 测试
Gerrit传递的参数还是挺多的,可以很方便的获取。基本上这些参数就够用了。
Pipeline As Code
到此基本上触发就已经完成了,后续添加构建和发布步骤。Gerrit进行CodeReview还是很方便的,现在每次提交的代码、Jenkinsfile都需要先进行CodeReview才能进行merge。
文章转载自公众号:DevOps云学堂
