Gerrit代码Review高阶实战

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库,并且保存到另外一个地方。

Gerrit代码Review高阶实战相关推荐

  1. Gerrit代码Review入门实战 1

    Gerrit代码Review入门实战 库 代码审核 Android Gerrit 经验分享 阅读23889  代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但在实际项目执行 ...

  2. 视频教程-2019 react入门至高阶实战,含react hooks-ReactJS

    2019 react入门至高阶实战,含react hooks 从事前端开发近5年时间,曾任职于丽珠集团等大型企业担任高级前端开发工程师职位,积累了很多大厂的前端开发经验. 目前处于创业期,正在筹备自己 ...

  3. NLP高阶实战必读:一文走遍完整自然语言处理流程

    NLP进阶之路上,你是否也遇到过这些疑问? 为什么在这个问题上使用Adam,而不是GD或者Adagrad? 对于特定的业务场景,我应该如何把领域知识考虑进去, 用先验,还是用限制条件? 对于拼车场景, ...

  4. Python金融量化 | 从入门到高阶实战应用

    引言 今天给大家分享一个微信公众号"Python金融量化",作者是金融学博士,堪萨斯大学访问学者,专注于分享Python在金融量化领域的实战应用,坚持走原创路线,持续输出技术干货, ...

  5. Java高阶代码_Java高阶语法---Volatile

    背景:听说Volatile Java高阶语法亦是挺进BAT的必经之路. Volatile: volatile同步机制又涉及Java内存模型中的可见性.原子性和有序性,恶补基础一波. 可见性: 可见性简 ...

  6. Gerrit代码Review入门实战

    代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但在实际项目执行过程中,却因为种种原因被Delay甚至是忽略.在实践中,给大家推荐一款免费.开放源代码的代码审查软件Gerri ...

  7. Gerrit代码Review入门

    代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但在实际项目执行过程中,却因为种种原因被Delay甚至是忽略.在实践中,给大家推荐一款免费.开放源代码的代码审查软件Gerri ...

  8. aes加密php源码,AES加解密类源码 · ThinkPHP5高阶实战教程 --诠释为API开发而生 · 看云...

    # AES加解密类源码 > 根据网络整理 ~~~ /** * Created by PhpStorm. * Power by Mikkle * QQ:776329498 * Date: 2017 ...

  9. 就是这35个人,率先入选了《共识算法高阶课》第一期!

    本文的主要内容是硅谷密探<区块链共识算法(高阶)实战必修课>第一期全体 35位入围成员的完整名单. 可能有人还不熟悉<区块链共识算法(高阶)实战必修课> ,这是硅谷密探和知乎& ...

最新文章

  1. cf两边黑屏怎么解决win10_Win10电脑开机黑屏只有鼠标指针无法进入桌面的解决方法...
  2. 【新浪上海】上海信息化建设进入新阶段 首席信息官联盟发挥重要作用
  3. asp.net的cms 核心代码篇
  4. reactor官方文档译文(1)Reactor简介
  5. metaprogramming笔记
  6. 2021ICPC(澳门) - LCS Spanning Tree(广义后缀自动机)
  7. python的六大数据类型中可以改变_在python中更改数组的数据类型
  8. 【ElasticSearch】ElasticSearch immense term错误
  9. 输出判断Codeforces Round #184 (Div. 2)
  10. mapxtreme for java_MapXtreme For Java 4.8.2 超菜入门
  11. php 爬虫框架QueryList
  12. Linux 文件的打包与压缩
  13. 罗比机器人说明书_罗比_机器人人物_我要机器人
  14. 一款手机电脑都能用的进销存财务软件
  15. 【青少年编程】【三级】接苹果
  16. 硕士论文怎么寻找创新点?
  17. 印光法师:《灵岩遗旨》壹、悲化有情
  18. 网管好助手--PSTOOLS
  19. 学好java应该读的几本书
  20. IntelliJ IDEA 电脑扩展分屏显示问题

热门文章

  1. (1)散列表(哈希表)的定义
  2. mysql 常用命令集_Mysql 常用命令集
  3. JS判断客户端是手机还是PC的2个代码
  4. A New Beginning
  5. markdown编辑器 使用语法
  6. angularjs揭秘
  7. Python开发利器PyCharm 2.7附注册码
  8. 结构化编程:不确定迭代循环控制do while
  9. python面试题之迭代器和生成器的区别
  10. FTP环境搭建及客户代码调用公共方法封装