zoukankan      html  css  js  c++  java
  • 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推送而无需审查。

     

  • 相关阅读:
    Java数据结构之排序冒泡排序
    Java数据结构之单链表
    Java数据结构之排序选择排序
    Java基础之方法详解
    Java基础之数组类型
    linux/Unix下的vim/vi指令的使用方法
    如何在Ecplise调试之后恢复原来的界面
    Java数据结构之队列
    Java数据结构之排序插入排序
    开发部署带有自定义用户控件的WebPart全过程
  • 原文地址:https://www.cnblogs.com/jeesezhang/p/5034099.html
Copyright © 2011-2022 走看看