ubuntu下gerrit 安装部署

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.启动

Executing .../gerrit.sh?start

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_header  X-Forwarded-For $remote_addr;
        proxy_set_header  Host $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 Users  Gerrit中执行批处理的用户
  • 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推送而无需审查。

 

原文地址:https://www.cnblogs.com/jeesezhang/p/5034099.html