对于经常协作写代码的我们来说,代码审核是我们经常忽略的事情,但是确是非常非常重要的事情,良好的 code review 会为未来项目的维护起到非常大的帮助,今天我们就来搭建一套完整的 code review 环境。
环境搭建
安装 java
首先我们先安装 Java 环境,这个比较简单,我们直接使用 wget 来获取 jdk 安装包
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
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
测试是否安装成功
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 安装即可
yum install git
yum install httpd
yum install nginx
安装 gerrit
到 gerrit 官网下载安装包
下载完成后,执行命令行安装,可以一路回车,因为所有的配置都可以通过配置文件来修改
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 配置成功
**** 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 仓库即可
再执行如下两条命令
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,然后执行如下命令
touch test.py
git add .
git commit -m 'first commit'
git push origin HEAD:refs/for/master
出现如下信息则表明成功
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结合,来实现自动化的代码审核