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中不足之處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM