• ubuntu搭建gerrit+gitweb代码审核系统


    一、Gerrit的简介

    Gerrit是Google开源的一套基于web的代码review工具,它是基于git的版本管理系统。Google开源Gerrit旨在提供一个轻量级框架,用于在代码入库之前对每个提交进行审阅。每个修改都将提交到gerrit上,但实际上没有真正意义的成为项目的一部分,直到提交被管理员review和submit。它是标准开源过程的一个简单工具来支持提交补丁程序,然后由项目成员在应用到代码库之前进行review。

    二、Gerrit的搭建步骤

    1. 账号配置
      • 配置gerrit的管理账号
        sudo adduser gerrit
      • 给gerrit增加sudo的管理员权限
        sudo usermod -a -G sudo gerrit
      • 后续所有的操作都需要切换到gerrit账号进行
        sudo su gerrit
    2. 安装java环境

      

    sudo add-apt-repository ppa:openjdk-r/ppa
    sudo apt-get update    
    sudo apt-get install openjdk-7-jdk
    1. 安装配置git环境
      sudo apt-get install git
    2. 安装配置Apache2
      • 下载Apache2
        sudo apt-get install apache2
      • 修改配置文件,后面会用到Apache的反射
        sudo vi /etc/apache2/httpd.conf 这种方式是通过vi在命令里面修改
        或者
        sudo gedit /etc/apache2/httpd.conf 这种方式是通过打开一个文本编辑器进行修改
      • 具体的修改的内容如下,我写了注释的地方需要注意根据自己的需求进行修改
    <VirtualHost *:8081>  //这里是反射代理的端口号,
         
        ServerName 10.180.152.83    //这里是填写Apache反射代理的ip地址,也就是你服务器的ip地址
     
        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    //这个路径是gerrit账户密码管理,后续的步骤中会创建此文件。路径有写正确
        </Location>
     
        AllowEncodedSlashes On
        
        ProxyPass / http://127.0.0.1:8091/ nocanon  //这里是代理反射,照着写就OK了
     
    </VirtualHost>
    

      

    注意:
    如果http.conf没有Include到apache2.conf中,就需要手动添加:

    sudo vi /etc/apache2.conf

    添加如下,

    Include http.conf


    - 修改配置文件,添加对8081端口的监听:

    sudo vi /etc/apache2/ports.conf

    添加,
    Listen 8081 //这里的8081端口号是上面配置的Apache2反射端口
    - 开启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
    

      

    1. 安装配置gerrit
      gerrit的最新下载地址:https://www.gerritcodereview.com/
      本教程使用的是gerrit-2.16
      • 进入到下载好的gerrit软件目录
        cd home/gerrit/download
      • 安装解压下载好的war包
        java -jar gerrit-2.16.war init -d ~/review_site #这里的review_site是解压出来的包名,最好不要修改。避免不必要的错误
      • 安装的时候,选择默认配置,一路回车,安装完成之后。打开浏览器输入 loccalhost:8080就能看到gerrit的界面了。
      • 当然了,作为一名优秀的程序员,我们不能止步于默认配置。所以,我们对配置文件进行按需修改
        sudo gedit ~/review_site/etc/gerrit.config

        具体的修改内容如下:
    [gerrit]
            basePath = git    //这里是配置gerrit项目管理仓库的名字。可以所以修改
            serverId = 02481fa0-9b63-4b6a-9869-8b4e2a4364ee
            canonicalWebUrl = http://110.180.152.83:8081/    //这里就是打开gerrit管理系统的地址了。这个地方和前面配置的Apache2的反射文件要一致
    [database]
            type = h2    //这里是选择数据库,gerrit支持h2/mysql/postsql三种,一般不是那种超级大型的团队管理,我们选择h2就够用了。
            database = /home/gerrit/review_site/db/ReviewDB  //这里是数据库的位置
    [auth]  
            type = HTTP    //这里一定要改,改成HTTP的方式。
    [receive]
            enableSignedPush = false
    [sendemail]    //这里是邮箱配置,如果是公司内网,发送邮件不方便的话,可以配置为sendemail = fasle就行了。后面我会教大家,绕过邮箱认证账号的方法。
            smtpServer = smtp.company.com
            smtpServerPort = ***
            smtpEncryption = ssl 
            smtpUser = user@company.com  //这里填写要发送验证信息的邮箱
            smtpPass = ******    //这里输密码
            sslVerify = false 
            from = Code Review < gerrit@company.com >  //填写邮箱
    [container]
            user = gerrit  //这里不要改动,选择gerrit登陆
            javaHome = /usr/lib/jvm/java-7-openjdk-amd64/jre  //这里是默认选择的Java路径
    [sshd]
            listenAddress = *:29418    //这里不准改,这里就选择默认的29418
    [httpd]
            listenUrl = proxy-http://*:8091/    //这里修改端口,*可以替换成对应的ip也可以不换
    [cache]
            directory = cache
    

      

    • 配置一个gerrit的管理员账号:
      touch ~/review_site/passwords //这个文件就是上面Apache配置的账号路径
      sudo htpasswd -b ~/review_site/passwords admin admin //新增账号admin和密码
      

        

    1. 安装配置gitweb
      • 下载安装gitweb
        sudo apt-get install gitweb
        

          

      • 查看相关配置文件的安装路径
        dpkg -L gitweb
        

          


        得到输出如下:
    /.
    /usr
    /usr/share
    /usr/share/doc
    /usr/share/doc/gitweb
    /usr/share/doc/gitweb/examples
    /usr/share/doc/gitweb/examples/index.aux-generation
    /usr/share/doc/gitweb/README.Debian
    /usr/share/doc/gitweb/copyright
    /usr/share/doc/gitweb/README
    /usr/share/doc/gitweb/NEWS.Debian.gz
    /usr/lib
    /usr/lib/cgi-bin
    /etc
    /etc/apache2
    /etc/apache2/conf.d
    /etc/apache2/conf.d/gitweb
    /etc/gitweb.conf
    /usr/share/doc/gitweb/changelog.Debian.gz
    /usr/lib/cgi-bin/gitweb.cgi
    

      

    打开gerrit的config:

    sudo gedit ~/review_site/etc/gerrit.config
    

      


    添加从上面路径的最后一行

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

      

    1. 重启gerrit和Apache2
    sudo ~/review_site/bin/gerrit.sh restart
    sudo /etc/init.d/apache2 restart
    

      

    1. 访问gerrit管理界面
      浏览器输入:
      http://192.168.130.10:8081/

    三、问题与总结

    Q1: gerrit服务器搭在公司内部局域网,没有办法发送外部邮箱进行账号验证怎么办?
    A1: 我们可以直接远程操作数据库进行修改账号的邮箱地址,具体方法如下:
    - 为ssh的主机配置设置别名,在~/.ssh/config文件中添加:

    Host review
        Hostname    10.180.152.81
        User        admin    //这个名字要和网站上管理员的名字相同
        Port        29418
        IdentityFile    ~/.ssh/id_rsa
    

      

    这样就可以简单通过ssh访问gerritl了。效果如下:

    # ssh review
    
    ****    Welcome to Gerrit Code Review    ****
     Hi username, you have successfully connected over SSH.
    Unfortunately, interactive shells are disabled.
    To clone a hosted Git repository, use:
    git clone ssh://admin@review.domain.tld:29418/REPOSITORY_NAME.git
    Connection to review.tafdc.org closed.
    

      

    然后,通过ssh远程连接gerrit进行账号邮箱的配置。

    ssh review gerrit set-account --add-email xxxxx@邮箱 admin
    

      

    总结:

    gerrit的代码审核系统是非常有必要学会的,这是提高代码质量和项目的重要方式。我们要在对code的review中,不断发现其他同事优秀的代码,也要接受自身code中不足之处。

  • 相关阅读:
    原生JavaScript事件详解
    如何真正重写window对象的方法
    JSLint JavaScript代码质量审查工具汉化中文版隆重发布
    {{偷偷告诉你}}本博客已适配移动端浏览
    谷歌(Chrome)浏览器调试JavaScript小技巧
    小米Web前端JavaScript面试题
    根据配置文件加载js依赖模块(JavaScript面试题)
    中移杭州研发中心
    MyBatis与Hibernate区别
    hashmap源码解析,JDK1.8和1.7的区别
  • 原文地址:https://www.cnblogs.com/navysummer/p/11224740.html
Copyright © 2020-2023  润新知