Linux環境搭建Gerrit服務器與升級Gerrit服務器

1.Gerrit是什麼

       Gerrit是Google開發的開放源代碼的代碼審覈工具,可以方便得進行代碼審覈工作。代碼審覈方便事前和事後加強監督和管理,從而提高工程質量,保證產品的高質量開發。

       Gerrit本身就包含Git,網上有各種Gerrit和GitLab混搭的方法,我看完全是沒有必要的,只要搭建Gerrit即可。

       Gerrit+Jenkins是一般公司的搭配,但Jenkins配置比較複雜,而且其實每日進行日構建,也完全可以達到版本糾錯。但Gerrit之類的代碼審覈工具,是很有必要存在的。

2.在Linux上搭建Gerrit服務器

      一般建議在Linux上搭建Gerrit服務器。

     1)下載Gerrit      

      首先,下載Gerrit源代碼安裝包。Gerrit的下載地址是:https://gerrit-releases.storage.googleapis.com/index.html

      2)安裝JAVA

       Gerrit是用JAVA編寫的,所以,確保你本地有JAVA運行環境。一般的Linux都安裝了默認的JAVA運行環境,但如果沒有,你應該安裝。

      如果不懂JVM、JRE和JDK三者關係的,不明白爲什麼JAVA程序爲什麼要安裝JAVA運行環境的,可以查更多資料瞭解,但如果想安裝JAVA運行環境,可以有幾種方法:

      1)普通方法,下載JAVA運行環境或者JDK,然後修改環境文件;

      現在的JAVA服務器,已經要求用IE下載JRE或者JDK了,如果可以用IE可直接下載。

      可以用/etc/profile 等方法修改環境變量。

      典型的配置文件修改如下:

      

export JAVA_HOME=JAVA程序安裝目錄或者解壓包目錄
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

      2)CentOS用yum安裝,Ubuntu用apt-get install 安裝。

      

//ubuntu下安裝JAVA的方法
sudo apt-get update
sudo apt-get install oracle-java8-installer

//CentOS下安裝JAVA的方法
yum install java-1.8.0-openjdk*

     當在程序中打java --version出現版本信息的時候,就可以認爲JAVA安裝成功了。

     3)Gerrit安裝

     下載好Gerrit包之後,執行安裝命令。

      

java -jar Gerrit安裝包 init -d Gerrit安裝目錄

     安裝時,有相關配置選項,一般情況下,默認安裝就可以;如果有個性化修改,可以個性化修改。

     一般情況下,如果是Gerrit服務器,部分安裝參考會要求用gerrit用戶,我個人感覺沒有必要。當然,如果創新新的用戶有如下好處:Linux是多用戶和多環境的,創建一個全新的用戶,方便不同用戶訪問不同的權限並具有不同的程序運行環境。

     4)Gerrit+Nginx配置

      Gerrit服務器運行的方法是:在Gerrit安裝目錄,執行 ./gerrit.sh start

     但如果用web直接登錄Gerrit,會出現各種問題。一般會建議用Nginx作爲反向代理,爲Gerrit提供相應目錄。

      (1)Nginx安裝:

         Nginx下載地址:https://nginx.org/download/

        下載完成以後,直接解壓安裝即可。

        一般情況下,安裝要求如下:

        

wget 遠程下載鏈接

## 解壓
tar -zxvf Nginx安裝包.gz

##進入nginx目錄
cd 解壓後的安裝包

## 配置,如不加--prefix= 就會安裝到默認路徑下
./configure --prefix=/usr/local/nginx

# make
make
make install

    (2)Nginx + Gerrit配置

       首先,配置Gerrit,Gerrit的配置文件在  Gerrit安裝路徑/etc/gerrit.config,打開gerrit.config進行配置。

           

[gerrit]
        basePath = git
        canonicalWebUrl = http://網址:(端口號,我配置爲80)/  #網址加端口號,最主要和Nginx對應
        serverId =  #serverID
[database]
        type = h2 #可修改,我是用默認的
        database = /home/ad/review_site/db/ReviewDB #DB路徑
[index]
        type = LUCENE
[auth]
        type = http
        logoutUrl = http://192.168.1.99:80
[receive]
        enableSignedPush = false
[sendemail]
        smtpServer = localhost
[container]
        user = ad
        javaHome = /usr/lib/jvm/java-8-openjdk-amd64/jre #JRE路徑,我用的是默認路徑
[sshd]
        listenAddress = *:29418 #默認ssh端口,我採用默認的,可修改
[httpd]
        listenUrl = http://*:Gerrit實際的端口號,可修改,不衝突即可/
[cache]
        directory = cache
[sendemail]
        #這部分可以不要
        enable = true
        smtpServer = smtp地址
        smtpServerPort = smtp端口號
        smtpUser = smtp用戶
        from = gerrit庫
[gitweb]
        #隨後添加 

        Nginx配置,可以在gerrit配置文件中進行配置Nginx 服務。默認配置目錄是/etc/nginx/,如果沒有默認安裝,可以用whereis nginx進行安裝。

      在目錄下,可以新建一個gerrit.conf,並進行配置。

      

server {
        listen 監聽端口,我默認的是80;
        listen [::]:監聽端口,我默認的是80;

        server_name localhost;
        allow all;
        deny all;

        auth_basic "Welcomme to Gerrit Code Review Site!";
        auth_basic_user_file ~/review_site/etc/passwd(可根據自身實際進行修改);

        location / {
            proxy_pass http://localhost:(上面Gerrit的監聽端口);
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
        }
}

     弄好以後,重啓Gerrit和Nginx。

     重啓Gerrit:Gerrit安裝路徑/bin/gerrit.sh  restart

     重啓Nginx:/etc/init.d/nginx restart

5)安裝gitweb

      安裝命令行: 

      ubuntu: apt-get install gitweb
      redhat/centOS: yum install gitweb

      配置gitweb,配置文件爲 /etc/gitweb.conf

      關鍵是修改$projectroot

      同時,修改原來gerrit.config

      

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

3.Gerrit權限管理和審覈代碼

1)建立用戶       

        Web管理很重要的一個工作就是權限管理和ACL管理,這樣才能保證數據的安全和互聯網上信息的安全。所以,在一個Web管理系統裏,用戶分類和權限管理是非常有必要的。

       在Gerrit裏面,首先要簡歷用戶名和密碼,用戶名和密碼建立通過Linux,而且,gerrit.conf也建立了用戶名和密碼驗證的路徑。到密碼驗證路徑下,執行 建立用戶和密碼的命令,會修改相應密碼。

        

htpasswd -m passwd(即文件名) 用戶名

       隨後,用web登錄gerrit服務器,用剛建立的用戶名和密碼,然後,可以修改相關信息。同時,可以把自身的公鑰放到Gerrit庫上。

       Gerrit配置公鑰需要本地有公鑰,公鑰建立方法:

      (1)在Git Bash裏執行 ssh-keygen -t rsa -b 4096 -C [email protected]

      (2)把 “C:\Users\用戶\.ssh”的id_rsa.pub打開,把裏面的文件輸入到Add Key裏面。

       注意:如果用戶的相關信息已存在,則可能會有500 Internal Error ,不創建相關信息即可。

  2)作爲管理員,可以對用戶分組,並對組別權限進行設置。

  一般情況下,用Gerrit會禁止用戶直接合入。

   方法爲,用web進入gerrit,選擇“People” ——> "Create New Group",把默認的用戶給加進去。

   

       可以設置用戶禁止直接合入代碼。

       選擇相應的工程----->"Acess" ----->"Add Reference" ------> "Add Permission",選擇“Push”,選擇需要的Group,然後,權限改爲BLOCK,即可禁止用戶直接合入代碼。

       備註:只有管理員纔有較大權限,其他人可以分配一般開發的權限。讀權限是必須放開的,具體參考禁止直接push權限。

4.升級Gerrit服務器

      較低版本的Gerrit會缺失相應的功能,故對Gerrit進行升級。

     升級步驟:

     1)備份原有程序(建議整體遷移到另一個文件);

     2)關閉原來的程序,下載新版本後,執行java -jar 新版本 init -d 原來的安裝目錄。依然會提示你相應修改,默認不變即可;

     3)執行原來的運行程序,如果出錯,執行java -jar 新版本r reindex -d 原來的安裝目錄

後記:

        在敏捷式開發中,代碼審覈是很重要的一環,Gerrit是必不可少的一部分,也是團隊整體提高開發能力的重要一環。筆者也感覺到:人和人的差距其實並不大,關鍵是理念和運用工具的能力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章