Gerrit代码Review高阶实战

Gerrit 是一个免费、开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一团队的程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改。它使用 Git 作为底层版本控制系统。

《Gerrit代码Review入门实战》中,个推高级技术总监董霖提到,入库前code review性价比更高,时间点更佳。他还重点讲授了关于Gerrit安装部署,正常代码提交流程,提交完整打回处理流程以及单个提交打回处理流程实战,本期《Gerrit代码Review高阶实战》将介绍Jenkins集成,Email通知,Gerrit与外部Git仓库同步和入库前临时打包测试的有关内容。

一、高阶实战-Jenkins集成

实现Jenkins集成前需完成Gerrit相关准备工作。

配置verify帐号,这里的verify账号是提供给jenkins 使用,需要提供jenkins 所在电脑的ssh public key,填写至下图所示区域,也可使用http方式配置verify 账号。

添加events-log插件。events-log 插件不属于默认集成,且官方不提供jar包下载,需自行编译。

编译命令  “buck build plugins/<plugin-name>:<plugin-name>”
输出目录  “buck-out/gen/plugins/<plugin-name>/<plugin-name>.jar”

如下图所示

安装过程相对简单,拷贝 event-log.jar 包至“gerrit/review_site/plugins”目录,重启即可。

Jenkins简介

Jenkins是应用非常广泛的自动化解决方案,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括持续的软件版本发布/测试项目以及监控外部调用执行的工作。目前最新的Jenkins2.0主推CI和CD的概念,能通过Jenkins系统便捷的完成工作流,包括从编译,测试到发布等。

Jenkins安装配置

Jenkins 提供多种安装方式,根据实际情况自行选择,本文的安装环境是ubuntu,因此采用了apt-get 方式。

启动命令 “service Jenkins start”,安装Gerrit Trigger插件,进入Jenkins 提供的插件安装界面,选择GerritTrigger 插件,进行安装。(可能需要发挥小伙伴们的聪明才智绕过访问限制)

安装gerrit-trigger后 “系统管理” 页面中会出现 “GerritTrigger ”选项,进入填写相关配置。

需要注意的是,Username字段需要和 Gerrit 系统中verify功能配置的账号对应。

填写好后,点击Test Connection测试,如果出现异常,逐个检查配置是否正确。

接着,添加Job,配置Gerrit触发条件和执行动作。

Gerrit Trigger提供多种触发条件,这里主要是提供verify功能,选择Patchset Created选项,在任何修改提交到Gerrit上时,进行CI(Continuous integration ,持续集成)自动构建,在Dynamic Trigger Configuration选项里面填写工程名,监听分支名,这样当master 分支有变动的时候就会自动触发该job。

验证测试

提交change

测试上一步操作中添加的gexin-test工程。

检查Verified状态

提交后打开Gerrit,发现该次提交的verify已经通过(注意:这里并没有进行真实的verify工作,需要根据项目实际情况定义verify具体内容)。

检查Jenkins Job日志

打开 jenkins里面的job console,可以看到该次verify的具体日志,用于排查问题等。

二、高阶实战-Email通知

Gerrit配置smtp参数,Gerrit自带了邮件提醒功能,可watch 不同项目,不同事件,根据实际需要配置 “~/gerrit/review_site/etc/gerrit.config”文件,如图所示。

配置Email通知事件

gerrit设置界面提供了通知时间选择。

自定义邮件模板

“~/gerrit/review_site/etc/mail”目录下提供各种事件邮件模板,可根据需求修改。 参考(Gerrit Code Review)。

三、高阶实战-Git仓库同步

Replication插件提供了自动同步工程功能,Gerrit安装时可默认选择安装

$site_path/etc/replication.config。

配置可参考下图

配置好后,上文中commit点入库后,自动同步到github,实现Replication复制功能。

四、高阶实战-入库前临时打包测试

Gerrit直接下载相应的tgz包

在实际工作中,会遇到commit点在reivew的时候需要打包看效果的情况,这时reviewer可以打包下载代码,或者git fetch改点代码,地址如下图所示。

五、Gerrit闲谈

1、关于Android Code Review工作流

上图Google针对Android系统源码开发所采用的代码审核入库流程,比较严格,因为系统源码的问题是影响非常深远的。在实际项目执行中,可以参照该流程进行相应简化,在敏捷和规范间做个权衡。

2、Gerrit数据备份

代码安全永远是重中之重,定期对整个$site_path目录进行备份是必不可少的。可以通过脚本自动备份和压缩Gerrit库,并且保存到另外一个地方。


Logo

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

更多推荐