1.Gerrit简介
Gerrit 是一种开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的代码,决定是否能够提交,退回或是继续修改。它使用版本控制系统,Git 作为底层。
通过Git 推送的代码由gerrit 接管。如果提交者不具有直接提交权限,任何代码的修改必须经过Gerrit的审查,审查通过后才可以合并的主分支。这种审查机制可由管理者自由拟定,Gluster 采用自动化审查加人工审查的方式。其中Jenkins 负责对代码的自动化审查,包括编译错误和脚本测试等。只有通过Jenkins的测试才能进入后续的人工审查。
2.安装
2.1 下载地址 http://gerrit-releases.storage.googleapis.com/index.html
2.2 安装命令
java -jar gerrit-2.8.war init -d review-site
3.配置
Database?server?type [H2/?]:mysql
Authentication method [OPENID/?]: http
***HTTP Daemon***
Behind reverse proxy[y/N]? y
Proxy uses SSL (https://)[y/N]?
Subdirectory on proxy server[/]: /gerrit
Listen on address[*]:
Listen on port [8081]:
Canonical URL [http://localhost/gerrit]:
4.启动
<span style="font-family: Microsoft YaHei;">Executing .../gerrit.sh?start
</span>
5.新建passwd文件
mkdir /etc/nginx/passwd
htpasswd -c /home/yu/gerrit/passwd/test.passwd test
6.nginx配置
location /gerrit/ {
proxy_pass http://127.0.0.1:8081;
proxy_set_headerX-Forwarded-For $remote_addr;
proxy_set_headerHost $host;
auth_basic"Gerrit Code Review";
auth_basic_user_file /home/yu/gerrit/passwd/test.passwd;
}
7.项目搭建
配置 publicKey
创建项目
项目版本控制(GIT)
①客户机必须先push到远程仓库的refs/for/*分支上,等待审核
②为了能让每次commit能自己insert 这个change-id,需要从gerrit server上下载一个脚本
scp -P 29418 -p root@192.168.1.31:/hooks/commit-msg .git/hooks/
③提交 git push origin HEAD:refs/for/master
8.项目管理
用户登录http://localhost/gerrit。Projects->List 会看到一个All-Projects 的项目,该项目为默认项目,设置了基本的评审权限。该默认项的作用是给其它项目提供继承权限,其它项目继承All-Projects 的默认设置,避免繁琐的权限管理配置。
图中将会创建一个名为hello 的项目。其中Rights Inherit From 指定了项目的继承源,选择All-Projects。点击Create Project 完成了对hello 项目的创建,该项目继承All-Project 的权限
9.用户组
Pepole->List Groups 查看用户组,在Gerrit2.8版本中,默认拥有5个用户组
解读如下:
Administrators Gerrit管理员,该用户组默认拥有admin用户,也就是第一个注册用户
Anonymous User任何用户未,登录或未登录
Non-Interactive UsersGerrit中执行批处理的用户
Project Owners 项目拥有者
Registerd Users 注册用户
以上是默认情况,点击用户组可以给用户组添加指定用户,使指定用户成为该用户组的一员
10.权限分配
Projects->List->All-projects->Acess 查看默认项目的权限分配。
解读如下:
Global Capbilities可以看到Stream Events默认对Non-Interactive Users用户组开放,Stream Events是Gerrit的事件流,一旦有代码改动会被触发。
Reference refs/*对于所有分支 所有用户都拥有读权限,也就是说任何用户可以clone任何代码
Reference refs/for/refs*对于for分支,注册用户拥有推送、合并、提交权限。
Reference refs/head/*对于head分支中
Push :管理员和项目拥有者具有推送权限,普通用户是无法直接向head分支推送的
Submit:管理员和项目拥有者具有提交权限
Label Verified: 这一权限是后来加进去的,为管理员和Non-Interactive Users用户指定代码检查权限。
其中为Non-Interactive Users用户组增加了jenkins用户,使jenkins具有了Verified权限。
其评分范围是-1到1。
Lable Code-Review: 管理员和项目拥有者具以及注册用户都有代码Review权限,其中管理者和项目拥有者评分范围是-2到2,注册用户评分范围是-1到1。Geriit中代码评分为2才能被commit。这样做的意义在于:注册用户可以参与代码评审,对其他评审这提供参考帮助,但是注册用户不能直接打2分。
可以看出普通用户和注册用户不能直接向head分支推送代码,只能向for分支推送。因为head分支是GIt仓库分支,for分支是gerrit引入的审查分支。代码在被推送到head分支之前必须经过审查。这里给管理员赋予了head分支的推送权限,管理员可以直接向head推送而无需审查。
Gerrit代码管理服务器配置:http://www.linuxdiyf.com/linux/14809.html
Gerrit在Ubuntu 11.04上的安装与配置:http://www.linuxdiyf.com/linux/6186.html
Gerrit在Fedora上的安装配置:http://www.linuxdiyf.com/linux/6153.html