您的位置:首页 > 其它

【指导】Jenkins集成Gerrit

2015-10-09 17:23 323 查看
【说明】其实Jenkins官网的指导已经很详细了(对于会的人而言),鉴于0基础0背景的缘故,其中还是有些磕磕绊绊,特此将其记录下来,供后来人参考:)

一、前提:Gerrit权限配置

1,账号基本配置:

  在Gerrit网站上给Jenkins用户添加key:

 


  key生成的方法: 

$su - jenkins
$ssh-keygen -t rsa


$cat ~/.ssh/id_rsa.pub         # 把公钥内容复制一下,添加到Gerrit中


2,群组配置:

  在Gerrit网站上 > Admin > Groups> Non-Interactive Users > 添加Jenkins用户:

 


3,权限配置:


  在Gerrit网站上 Admin > Projects > ... > Access > Edit

Reference: refs/*

Read: ALLOW for Non-Interactive Users

Reference: refs/heads/*

Label Code-Review: -1, +1 for Non-Interactive Users

Label Verified: -1, +1 for Non-Interactive Users

Global Capabilities

Stream Events: ALLOW for Non-Interactive Users

二、Gerrit trigger插件安装:
1,克隆安装git pullhttps://github.com/jenkinsci/gerrit-trigger-plugin.git
master:master(未尝试)
2,在线安装:

  



  从“Available”tab中选择 Gerrit Plugin和 Git Plugin,点击"Installwithout restart"完成安装。

  


三、Gerrit trigger插件配置:
1,入口Manage Jenkins > Gerrit Trigger > Add New Server:
  


 添加后,需要在倒三角出修改(我在这里被坑了好久。。各个版本可能不一样,不一样的话,仔细找找。。)

  


2,Server settings:

name:给gerrit服务器起个名字

Hostname:gerrit服务器的主机名,比如review.domain.tld

Frontend URL:通过什么URL可以直接访问到gerrit,比如http://review.domain.tld/

SSH Port:Gerrit服务器的SSH服务端口,比如29418

Username:Jenkins访问Gerrit服务器使用的账户名,填入在gerrit服务器为jenkins分配的账户名,比如jenkins
SSH Keyfile:访问Gerrit SSH的私钥,如:/var/lib/jenkins/.ssh/id_rsa
  填写完后点击"TestConnection"验证。没问题了保存退出重启链接就可以了。

四、Jenkins Project配置:
1,首先,加几个参数GERRIT_REFSPEC/GERRIT_BRANCH/……(视情况而定,需要了就加):
  


2,源码管理选择Git:

  Repositories -> Repository URL,输入访问git仓库的ssh路径,比如ssh://jenkins@121.42.47.103:29418/test/ci.git

  这里需要注意下,希望检查库上的分支,还是gerrit上的change:

 


  


3,构建触发器选择Gerrit
event:

  1)Gerrit Trigger:

   Choose a server------选择前面步骤配置好的gerrit服务器

   Trigger on event-----保存后默认会自己加上PatchsetCreated和Draft Published,当提交新的patchset后,
jenkins自动为gerrit做verify工作。

   可自定义选项(源自官网):

Draft Published: Sent when a change moves from draft state to new. (only available in version 2.5 or higher of Gerrit).
Patchset Created: Sent when a new patchset arrives on a change. Before version 2.6.0, this was the only event you could trigger on.
Change Merged: Sent when a change is merged on the Gerrit server.
Comment Added: Sent when a comment is added to a change. Which category and value to trigger on can be configured. The available categories can be configured in the server settings for the plugin.
Ref Updated: Sent when a ref is updated on the Gerrit server, i.e. someone pushes past code review.

  


  2)Gerrit Project:
  仓:
    单个的:type选择plain,pattern输入工程名
    所有的:type选path,pattern填**
  分支:
    单个的:type选plain,pattern输入分支名
    所有的:type选path,pattern填**
  


  3)Build:
   选择Excute shell,输入构建脚本就好了~

手工触发试试:

  


成功了!
看看Gerrit:
    



也成功了!

自动触发试试:
    


也成功了!每次gerrit服务接收到开发人员提交的changes,都会通知jenkins,自动verify就行了,不要开发人员去手工编译工程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: