关于Jenkins自动化测试的资料:  你不容错过的持续集成工具——Jenkins

gerrit是一个基于web的代码审查工具,用于git版本控制系统,在代码入库之前对每个提交进行审阅。

gerrit是一个临时区域,在提交的代码成为代码库的一部分之前,可以对其进行修改和检查。在gerrit配置中有两个计数器,Code-Review和Verified,一般情况项目会分别设置为+2,+1使代码审核通过。Code-Review通常需要开发人员人工审核,而Verified设置项可以与测试工具结合,通过测试的指标则设置Verified +1,不通过则-1,如此可以在代码提交阶段提前介入测试,更早的发现问题。

而开发代码提交之后,理想的状态是自动触发测试,而不需人工干预,因此我们可以借助jenkins集成gerrit搭建自动化测试系统。

本文主要讲述jenkins如何集成gerrit。

前期准备

jenkins中需要安装ssh插件以达到免密下载git代码的目的。

首先在jenkins的安装主机上生成ssh密钥:

ssh-keygen -t rsa -C "KernelTest"

生成的密钥默认保存在/root/.ssh文件夹下,该文件夹下包含id_rsa和id_rsa.pub两个文件,分别表示私钥和公钥,接下来将公钥和私钥分别复制到gerrit源代码管理服务器和jenkins上即可实现在jenkins上无密码下载代码。

使用cat ~/.ssh/id_rsa.pub命令打印公钥内容,然后登录自己的gerrit账号,(比如KernelTest用户),添加SSH keys。 

 https://ask.qcloudimg.com/http-save/yehe-5521279/61cjiivop5.png?imageView2/2/w/1620

权限控制

在gerrit中权限控制是基于群组的,每个用户有一个或者多个群组,访问权限被赋予这些群组,不能赋予个人用户,gerrit系统自带了以下System Groups:

  • Anonymous Users 匿名用户,能被所有用户继承
  • Change Owner 访问权限在change范围内有效
  • Project Owners 访问权限在project范围内有效
  • Registered Users 所有在gerrit页面上成功登录的用户都属于该群组,通常被赋予Code-Review -1..+1权限,允许做代码审核

System Groups是在gerrit系统内部定义好的,而普通群组信息被保存在ACCOUNT_GROUPS表中,predefined groups群组信息同样保存在ACCOUNT_GROUPS表中。Gerrit系统自带两个predefined groups:

  • Administrators 管理员权限可以管理所有项目
  • Non-Interactive Users 通过gerrit接口可以直接进行操作的权限

在jenkins中集成gerrit,必须保证jenkins中使用的账号具有Non-Interactive Users群组权限:

https://ask.qcloudimg.com/http-save/yehe-5521279/jifxddztx9.png?imageView2/2/w/1620

Gerrit集成

1、安装Gerrit Trigger插件,进入系统管理界面,找到Gerrit Trigger设置项

https://ask.qcloudimg.com/http-save/yehe-5521279/nwz5uq586g.png?imageView2/2/w/1620

2、设置Gerrit Trigger,点击新增一个Server,页面如下:

https://ask.qcloudimg.com/http-save/yehe-5521279/jpml0vgw8i.png?imageView2/2/w/1620

  • Name:server名字
  • Hostname:gerrit服务器地址
  • Frontend URL:gerrit的访问地址
  • SSH Port:ssh的端口号,一般默认为29418
  • Username:gerrit账号名
  • E-mail:gerrit账号对应邮箱
  • SSH Keyfile:ssh私钥路径
  • SSH Keyfile Password:ssh私钥密码,没有则为空

填写之后,点击Test Connection,显示Succeed则测试通过。

另外,还可以在页面上调整Verify和Code Review不同状态时的效果值大小。

https://ask.qcloudimg.com/http-save/yehe-5521279/zvkm78n6dn.png?imageView2/2/w/1620

项目集成

新建一个自由风格的项目,项目设置页面中会出现Gerrit Trigger设置项。

https://ask.qcloudimg.com/http-save/yehe-5521279/knz7pwq7rf.jpeg?imageView2/2/w/1620

1、Choose a Server

选择gerrit trigger server

2、Trigger on选择触发条件,常见触发条件如下:

  • patchset created – Trigger upon patchset creation.
  • draft published – Trigger on draft published event.
  • change abandoned – Trigger on patchset abandoned.
  • change merge – Trigger on change merged.
  • change restore – Trigger on change restored.
  • ref updated – Trigger on ref-updated.
  • private state changed – Trigger on private state changed event.
  • wip state changed – Trigger on wip state changed event.

一般情况下我们选择patchset created则任何一次代码的提交均会触发

3、Gerrit Project中添加项目和分支信息,添加类型分为三种实现方式:

  • Plain:描述
  • Path :路径
  • RegExp:正则

4、构建

执行单测执行脚本

项目设置完成后,当检测到代码提交触发gerrit trigger,会自动触发构建,构建结束后在gerrit页面可以查看该次提交对应的Verified结果,Verified返回结果一般有三种类型:

  • Successful:构建成功,Verified+1
  • Failed:构建失败,Verified-1
  • Unstable:一般构建过程中如果单测有case失败则会返回Unstable,Verified+0
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐