红联Linux门户
Linux帮助

ubuntu下gerrit安装部署

发布时间:2016-01-09 10:25:49来源:linux网站作者:py_

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 的权限

ubuntu下gerrit安装部署


9.用户组

Pepole->List Groups 查看用户组,在Gerrit2.8版本中,默认拥有5个用户组

ubuntu下gerrit安装部署

解读如下:

Administrators Gerrit管理员,该用户组默认拥有admin用户,也就是第一个注册用户
Anonymous User任何用户未,登录或未登录
Non-Interactive UsersGerrit中执行批处理的用户
Project Owners 项目拥有者
Registerd Users 注册用户

以上是默认情况,点击用户组可以给用户组添加指定用户,使指定用户成为该用户组的一员


10.权限分配

Projects->List->All-projects->Acess 查看默认项目的权限分配。

ubuntu下gerrit安装部署

解读如下:

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