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 = [email protected]  //这里填写要发送验证信息的邮箱
        smtpPass = ******    //这里输密码
        sslVerify = false
        from = Code Review < [email protected] >  //填写邮箱
[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://[email protected]:29418/REPOSITORY_NAME.git
Connection to review.tafdc.org closed.

  

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

ssh review gerrit set-account --add-email [email protected]邮箱 admin

  

总结:

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

原文地址:https://www.cnblogs.com/navysummer/p/11224740.html

时间: 2024-08-06 00:36:18

ubuntu搭建gerrit+gitweb代码审核系统的相关文章

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

Gerrit 代码审核服务器的工作流和原理 谷歌 Android 开源项目在 Git 的使用上有两个重要的创新,一个是为多版本库协同而引入的 repo,这在之前我们已经详细讨论过.另外一个重要的创新就是 Gerrit -- 代码审核服务器.Gerrit 为 Git 引入的代码审核是强制性的,就是说除非特别的授权设置,向 Git 版本库的推送(Push)必须要经过 Gerrit 服务器,修订必须经过代码审核的一套工作流之后,才可能经批准并纳入正式代码库中... 6.7   Gerrit 代码审核服

如何搭建gerrit开源code review工具

搭建环境:Ubuntu 14.04 一.环境准备 1.Java环境 gerrit依赖,用于安装gerrit环境. 下载:jdk-7u79-linux-x64.tar.gz http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 安装:sudo tar zxvf ./jdk-7u79-linux-x64.tar.gz -C /opt 配置:vim ~/.bashrc export JAV

使用Git与GitHub协同开发并搭建私有GitLab代码托管服务器

目录 [TOC] Git的发展史 Linus在1991年创建了开源的Linux,从此全世界的工程师参与了Linux的开发,期初Linus是通过手动diff的方式进行代码审核和合并的,后来BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统.安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气.开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMo

在Ubuntu搭建Git

在Ubuntu搭建Git 作者:chszs,版权所有,未经同意,不得转载.博主主页:http://blog.csdn.net/chszs Git是一个开源的分布式版本控制系统,它在全球范围内得到广泛的使用.互联网上还有像GitHub这样的网站提供了免费的Git服务,很多流行的开源项目都使用了Git来托管项目,比如Perl.Ruby on Rails.Linux内核项目等. 在Ubuntu系统上安装Git的最佳方式是使用Ubuntu软件仓库提供的软件包,这些软件包都是经过了充分测试的,已经完成了预

Ubuntu搭建Eclipse+JDK+SDK的Android (转载)

转自:http://blog.csdn.net/ithomer/article/details/6960989 今晚重装Ubuntu系统,重新安装了一套eclipse+jdk+SDK的Android开发平台 一 安装配置Eclipse环境 1 下载安装包 Eclipse: eclipse官方下载网站, 或直接下载eclipse-jee-indigo-SR1-linux-gtk.tar.gz JDK: jdk官方下载网站,或直接下载jdk-7u1-linux-i586 .tar.gz SDK: s

Ubuntu搭建VPN服务器

最近一段时间随着Google逐渐要退出香港,访问Google真是一件让人着急的事,同时很多源码包都无法安装.因此果断自己租一台服务器搭建一个VPN服务器,脱离墙内人士的苦海.因此将自己搭建VPN服务器的过程记录如下: 1. 服务器的租用:选取 BUDGETVM 最便宜的一款,一年的费用为90元人民币,同时支持支付宝付款,付款比较方便.经测试,延时为170ms,上网之类的还可以接受.如图所示: 2. ssh登录:租用成功后会有选择操作系统和其他一些选项,我取Ubuntu作为租用服务器的系统.同时最

[Android]Samba服务器在Ubuntu下的配置与Windows系统间的数据共享

安装Samba 安装sambasudo apt-get install samba[编辑]Kubuntu 安装系统设置的共享模块sudo apt-get install kdenetwork-filesharing[编辑]配置 1.windows 访问 ubuntu 第一步创建共享目录: 比如要创建/home/用户名/share首先创建这个文件夹 (这个用户名就是你的用户名,为了方便易懂我才这样写的,到时记得自己改啊) 代码:mkdir /home/用户名/share (新建share文件夹)c

自动化代码发布系统实现

日常运维问题 在我日常运维工作中,代码发布可能是最普遍的一项工作之一,尤其是网页代码的更新,碎片化发布需求非常频繁.在前期开发人员比较少时,还可以由自己来上服务器通过脚本来发布代码.但随着公司项目的增多,更多的开发人员加入到公司,发布代码需求开始增多,这就占用了我大部分时间,经常的被打断其它工作来发布代码,非常地不爽,然后开始想解决方法. 尝试解决问题 当然,发布代码肯定是运维的职责之一了,但频繁的发布导致运维大部分时间浪费在重复的操作上,非常的不值得.基于此,开始限制代码发布频率,要求把不是很

关于代码审核

最近一直在想如何提高产品质量的方法,其中最重要的一点就是要真正做好“代码审核”,而不是浮于便面只是为完成公司的流程制度,在这点上不仅我自己要做好,要让整个团队也能做好,要让大家真正通过代码审核这个活动提升自己,帮助别人.站在当前的角度在为提升团队代码审核效果要加强宣贯代码审核的重要性意义,已有的规范工具方法,团队成员达成共识.毕竟人才是首要问题,要大家齐心协力才能做好.下面这篇文章感觉很不错从自身不同的角色成长描述了对代审核的看法,其中穿插了一些不错的方法,分享一下. “code review”