前置条件:gerrit用户准备:

sudo adduser gerrit

sudo usermod -a -G sudo gerrit  #在用户原有组的基础上,附加一个次要组 -a代表添加或者附加,-G代表一个群组

切换用户:

sudo su gerrit

也可用

sudo visudo

gerrit  ALL=(ALL:ALL) ALL

将gerrit加入sudo权限

后续的操作最好都是在gerrit用户帐号下进行,否则某些文件的访问权限可能需要后面手动去做调整。

一、安装java

    sudo add-apt-repository ppa:openjdk-r/ppa

    sudo apt-get update

    sudo apt-get install openjdk-8-jdk


二、安装git

    sudo apt-get install git

三、安装配置apache2

    sudo apt-get install apache2

四、修改apache2配置文件

1、 sudo vim /etc/apache2/httpd.conf


<VirtualHost *:8081>
     
    ServerName 192.168.31.139
 
    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On
 
    <Proxy *>
          Order deny,allow
          Allow from all
    </Proxy>
 
    <Location "/login/">
        AuthType Basic
        AuthName "Gerrit Code Review"
        Require valid-user
        AuthBasicProvider file
        AuthUserFile /home/gerrit/review_site/passwords
    </Location>
 
    AllowEncodedSlashes On
    
    ProxyPass / http://127.0.0.1:8091/ nocanon #反向代理:把所有对 / 目录下的请求,全部转换成对 http://127.0.0.1:8091/ 。 nocanon 表示不加任务规则限制
 
</VirtualHost>

2、sudo vim /etc/apache2/apache2.conf

  在未尾加入 : Include httpd.conf

3、添加对8081端口的监听

    sudo vim /etc/apache2/ports.conf:
        Listen 8081

4、启用相关模块:SSL、Proxy、Rewrite等

    cd /etc/apache2/mods-enabled/

    sudo ln -s ../mods-available/proxy.load
    sudo ln -s ../mods-available/proxy.conf
    sudo ln -s ../mods-available/proxy_http.load
    sudo ln -s ../mods-available/proxy_balancer.conf
    sudo ln -s ../mods-available/proxy_balancer.load
    sudo ln -s ../mods-available/rewrite.load
    sudo ln -s ../mods-available/ssl.conf
    sudo ln -s ../mods-available/ssl.load
    sudo ln -s ../mods-available/slotmem_shm.load
    sudo ln -s ../mods-available/socache_shmcb.load

五、安装和配置gerrit

1、安装gerrit :

   下载地址 https://download.csdn.net/download/zyfzhangyafei/12889763

    java -jar gerrit-3.0.3.war init -d ~/review_site

        安装配置建议先全部按默认配置走,也就是一直回车就可以了。
    但是注意一下,后面安装插件部分建议全部选Y,也就是同意安装,避免后面再来手动安装。


2、修改gerrit配置文件 , 注意当前是在gerrit用户下进行的修改。

   vim ~/review_site/etc/gerrit.config

[gerrit]
    basePath = git
    canonicalWebUrl = http://192.168.31.139:8081/
    serverId = 77f7133c-e0af-4b75-b2da-002e9acf21eb
[database]
        type = h2
        database = /home/gerrit/review_site/db/ReviewDB
[container]
    javaOptions = "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"
    javaOptions = "-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance"
    user = gerrit
    javaHome = /usr/lib/jvm/java-8-openjdk-amd64/jre
[index]
    type = LUCENE
[auth]
    type = HTTP
[receive]
    enableSignedPush = true
[sendemail]
    enable = true
    smtpServer = smtp.163.com
    smtpServerPort = 465
    smtpEncryption = SSL
    sslVerify = true
    smtpUser = XXXXXX@163.com
    smtpPass = XXXXXXXX
    from = CodeReview<XXXXXX@163.com>
[sshd]
    listenAddress = *:29418
[httpd]
    listenUrl = http://*:8091/
[cache]
    directory = cache
[gitweb]
    type = gitweb
    cgi = /usr/lib/cgi-bin/gitweb.cgi

3、配置gerrit帐号

   touch ~/review_site/passwords

   sudo htpasswd -b ~/review_site/passwords admin 123123

六、安装gitweb

1、sudo apt-get install gitweb

    查看相关文件的位置

    dpkg -L gitweb

    /.
    /etc
    /etc/apache2
    /etc/apache2/conf-available
    /etc/apache2/conf-available/gitweb.conf
    /etc/gitweb.conf
    /usr
    /usr/lib
    /usr/lib/cgi-bin
    /usr/share
    /usr/share/doc
    /usr/share/doc/gitweb
    /usr/share/doc/gitweb/NEWS.Debian.gz
    /usr/share/doc/gitweb/README
    /usr/share/doc/gitweb/README.Debian
    /usr/share/doc/gitweb/copyright
    /usr/share/doc/gitweb/examples
    /usr/share/doc/gitweb/examples/index.aux-generation
    /usr/lib/cgi-bin/gitweb.cgi
    /usr/share/doc/gitweb/changelog.Debian.gz

2、在gerrit.conf中,配置gitweb的信息。具体参看(五.3)

    [gitweb]
        type = gitweb
        cgi = /usr/lib/cgi-bin/gitweb.cgi

七、重启gerrit和apache2

sudo ~/review_site/bin/gerrit.sh restart

sudo /etc/init.d/apache2 restart


八、登陆管理员,并添加pub key 到 gerrit中:

ssh-keygen -t rsa -C "3374185833@qq.com"

将 id_rsa.pub 内容发给管理员 ,管理员将pub key 添加到gerrit中:

 cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCt9D9we0/lqZVTYLN1RQrEYjYxTXVefmd+rIWDGoSLrs+sKvEXq9x2o0hHHW5d0qY/w0dSD7ox2K0OVd/DKEBZj5zTUhSGCGKhvXe4n7934HE3McXgFVTqL3wPoEAZqfWWuqAVk6tpFez/PQ4IbG82OtW5uZKlvAu2hIAyA0ufmFU62O+7PzI5hKWog2950s7/9jxxswbKBi804Di08VKdtla4/vMPZQGyq7OwQXxdZeXX4LjSqnFarT5nD4AluRZPhvRD/HWrRRsPFDtUcwJ6F2q2RK+vTA7jZ12cpGB3YtjAcahHOqMGaM5eTrfcw4hJ3Odry3gd4hy3tx1oofHd 3374185833@qq.com

验证 :
ssh -p 29418 admin@192.168.31.139 :

  ****    Welcome to Gerrit Code Review    ****

  Hi admin, you have successfully connected over SSH.

  Unfortunately, interactive shells are disabled.
  To clone a hosted Git repository, use:

  git clone ssh://admin@192.168.31.139:29418/REPOSITORY_NAME.git

九、clone代码到本地:
    git clone ssh://你的用户@192.168.31.139:29418/仓库名.git


重要说明:

1、gitweb集成gerrit后,默认只有管理员用户才能查看gitweb超链接,普通用打开链接后页面显示Not Found。
如果想给普通的用户查看gitweb超链接的权限,则必须对项目设置refs/meta/config 的read权限。
而这个权限在All-Projects的ACL里只对Administrators用户和Project Owners开放。

2、用户在添加到passwords后,并没有加入到数据库。只有用户通过web登陆后,才会加入数据库中。才能对用户进行分组和授权。

3、在使用非公司内部邮件服务器进行邮件发送时,QQ邮件服务器不能正常使用,报500相关错误,原因可能是QQ邮件服务器做了限制,也可能是我不清楚QQ邮件服务器的端口造成。后面改成163的邮件服务器才将用户邮箱验证成功。这里特别说明一下,这个邮箱地址要和git指定的邮件地址保持一致。(要求)

分组说明:
系统默认会有以下用户组:

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

我们根据自身业务需要增加和设置以下用户组:
developer组 : 开发组。针对参与项目的所有开发工程师。该组具有clone代码,提交开发分支的权限,以及向稳定分支提交change的权限。
reviewer组 :审查组。对工程师提交的change进行审查的权限。
verifier组 : 核实组。对change有合入权限。

审查用户可能同时拥有 审查组 和 核实组 的授权,也即审查和合入可能是同一个用户。
review过程需要+2,才能最终合入,即change提交者需要进行一次自审,再由审查组审核后方能合入。


---------------------------------------------------

 

 

 


[root@gerrit.yinzhengjie.org.cn ~]# htpasswd -cb /etc/httpd/passwords admin admin #注意,"-c"参数为创建,仅限第一次添加用户时使用,用户名和密码均为admin
Adding password for user admin
[root@gerrit.yinzhengjie.org.cn ~]# htpasswd -b /etc/httpd/passwords jason yinzhengjie #第二次创建时不要加"-c"参数。创建一个jason用户,密码为"yinzhengjie"

 sudo htpasswd -m gerrit.password userName

Ubuntu下搭建基于apache2的gerrit+gitweb服务器 :

https://www.cnblogs.com/eastnapoleon/p/6497802.html

Gerrit代码审核服务器的工作流程和原理:

https://blog.csdn.net/yuanzhangmei1/article/details/25784225

Gerrit 代码审核(Code Review):

https://blog.csdn.net/qq_17342753/article/details/81236710

Gerrit审批流程设置:

https://blog.csdn.net/fduffyyg/article/details/83759762

 

权限说明

https://blog.51cto.com/zengestudy/1774176

 

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐