从零搭建 Gerrit 实现 code review

2020-05-22 10:50:23 浏览数 (1)

对于经常协作写代码的我们来说,代码审核是我们经常忽略的事情,但是确是非常非常重要的事情,良好的 code review 会为未来项目的维护起到非常大的帮助,今天我们就来搭建一套完整的 code review 环境。

环境搭建

安装 java

首先我们先安装 Java 环境,这个比较简单,我们直接使用 wget 来获取 jdk 安装包

代码语言:javascript复制
wget https://download.oracle.com/otn-pub/java/jdk/14.0.1 7/664493ef4a6946b186ff29eb326336a2/jdk-14.0.1_linux-x64_bin.tar.gz?AuthParam=1588645745_e0dba871f2a7173ffc391d15713b9bc9

然后解压该文件,并设置环境变量就好,这里要注意你 jdk 包所放置的具体位置,打开环境变量文件 vi /etc/profile

代码语言:javascript复制
export JAVA_HOME=/opt/jdk-14.0.1
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

测试是否安装成功

代码语言:javascript复制
java -version
java version "14.0.1" 2020-04-14
Java(TM) SE Runtime Environment (build 14.0.1 7)
Java HotSpot(TM) 64-Bit Server VM (build 14.0.1 7, mixed mode, sharing)

安装 git、httpd 和 nginx

直接通过 yum 安装即可

代码语言:javascript复制
yum install git
yum install httpd
yum install nginx

安装 gerrit

到 gerrit 官网下载安装包

https://www.gerritcodereview.com/

下载完成后,执行命令行安装,可以一路回车,因为所有的配置都可以通过配置文件来修改

代码语言:javascript复制
adduser gerrit -m
su - gerrit
java -jar gerrit-2.15.18.war init -d /home/gerrit/gerrit
# 设置admin密码
htpasswd -c -m passwords admin

当然,我们为了方便起见,可以使用 development_become_any_account 模式来进行鉴权,这样就不需要通过 HTTP 的方式来鉴权访问了。

现在我们直接访问 http://IP:8080 就可以访问到 gerrit 服务器了,当然也可以使用上面安装好的 HTTP 代理服务器来访问,这个就大家自行研究啦。

环境配置

配置 gerrit

我们先通过 admin 用户创建一个 project,名字叫做 test1,然后在登录页面注册一个测试的普通账号,叫做 zw,然后把我们本地(需要使用 git 操作的机器)上的 id_rsa.pub 中的 ssh key 放到 gerrit 中

在 settings-> SSH Public Keys 中添加

接下来我们就可以在本地尝试 ssh 登录了

ssh zw@gerritIP -p 29418

如果出现以下信息,则表明 ssh 配置成功

代码语言:javascript复制
****    Welcome to Gerrit Code Review    ****

  Hi zw, you have successfully connected over SSH.

  Unfortunately, interactive shells are disabled.
  To clone a hosted Git repository, use:

  git clone ssh://zw@*.*.*.*:29418/REPOSITORY_NAME.git

接下来我们使用 git clone 来克隆刚刚创建的 test1 仓库即可

再执行如下两条命令

代码语言:javascript复制
gitdir=$(git rev-parse --git-dir); scp -p -P 29418 zw@47.105.185.84:hooks/commit-msg ${gitdir}/hooks/

git commit --amend

验证 gerrit

我们创建一个文件,名为 test.py,然后执行如下命令

代码语言:javascript复制
touch test.py
git add .
git commit -m 'first commit'
git push origin HEAD:refs/for/master

出现如下信息则表明成功

代码语言:javascript复制
Counting objects: 3, done.
Writing objects: 100% (3/3), 269 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Processing changes: new: 1, done    
remote: 
remote: New Changes:
remote:   http://*.*.*.*:8080/#/c/test1/ /2 first
remote: 
To ssh://*.*.*.*:29418/test1.git
 * [new branch]      HEAD -> refs/for/master

然后我们使用 admin 用户登录 gerrit web 端,就可以看到刚刚提交的请求了

gerrit 权限设置

现在提交的Review请求只有Code Rivew审核,如果我们要求Verified和Code Review双重保障,那么需要在 Projects 的 Access 栏里,针对 Reference: refs/heads/ 项添加 Verified 功能,如下如下: Projects -> List -> All-Projects Projects -> Access -> Edit -> 找到 Reference: refs/heads/* 项 -> Add Permission -> Label Verified -> Group Name 里输入 Non-Interactive Users -> 回车 或者 点击Add 按钮 -> 在最下面点击 Save Changes 保存更改。

同时还要给 register user 增加 submit 和 Label Code-Review 权限,添加方法同上。

如上配置完成后,有审核权限的用户就可以审核代码,并 submit 了。

至此,我们 gerrit 的配置基本就结束了,我们提交的代码,必须要人工审核才能够正常提交到代码库当中

后面,我们再来看看如何通过与Jenkins结合,来实现自动化的代码审核

0 人点赞