[Gerrit服務器集群搭建(一)] 初識Gerrit代碼審查系統


一、寫在前面
    公司安卓部門在擴張,尤其是我們這一撥新人進來后,本來負載就很重的Gerrit服務器更加吃不消了。前段時間,我有幸全程參與搭建了Gerrit服務器集群,在這里也將搭建過程總結記錄下來,給自己也給他人做一個參考,有誤或者有更好的建議都期待指教~
 
二、Gerrit服務器簡介
    簡言之,就是基於Git引入的強制代碼審核機制,原來是git push->Git庫,現在則變成了git push->Gerrit(代碼管理者審核通過)->Git庫。當然這是個不嚴謹的描述,較為詳細的介紹請參見http://www.worldhello.net/2010/11/10/2059.html
 
三、安裝Gerrit
    在探索用什么樣的方案搭建服務器集群前,我們還是需要先熟悉如何搭建一個Gerrit服務器。關於這方面網上資料挺多的,這里總結了用PostgreSQL數據庫+LDAP認證方式的搭建配置。
    LDAP是一種輕量目錄訪問協議,可以近似視為一個數據庫,百科告訴我它與一般數據庫的區別在於,它的目標是快速響應和大容量查詢並且提供多目錄服務器的信息復制功能。嗯所以MIS 部門用這個來存儲全公司員工的賬號密碼,對我們而言,只需要在Gerrit的認證部分配置好LDAP服務器,大家就可以免去注冊,直接用自己的賬號密碼登陸了。
    Gerrit初始化時支持三種數據庫選擇,分別是H2、MySQL和PostgreSQL。選擇PostgreSQL數據庫,主要是為了便於多服務器間實時共享數據庫數據,MySQL也可以做到,至於為什么需要實時共享數據庫,后續會進一步說明。
 
1、安裝前准備
(1)git安裝
sudo apt-get install git-core
(2)java安裝
sudo apt-get install openjdk-7-jdk
(3)數據庫安裝+初始化(僅需要在Master上完成)
apt-get install postgresql-9.4
    postgresql在安裝后會默認創建用戶,名為postgres。第一次登陸時軟件會自動給分配一個md5加密的密碼,所以雖然第一次登陸不需要輸入密碼,也需要修改用戶postgres的密碼,否則在下次登陸這個用戶時會因為密碼錯誤失敗的(如果遇到這個情況可以通過修改配置文件pg_hba.conf解決)。具體流程如下:
#登陸默認用戶
 su postgres #進入數據庫操作界面
 psql #修改默認用戶密碼
 alter user postgres with password '新密碼'; #創建新角色,這里命名為gerrituser,並授予創建db、role、user和登錄的權限,登陸密碼為777777
    create role gerrituser createdb createrole createuser login password '777777'; #退出當前用戶
 \q #登陸新用戶數據庫
    psql -U git -h localhost -d postgres #新建database,這里命名為gerritdb
    create database gerritdb;

 

2、gerrit安裝+詳細配置
(1)gerrit安裝
java -jar gerrit-2.9.4.war init -d review_site
(2)gerrit配置文檔
       在gerrit初始化完成后,會在網站目錄下的etc文件夾中生成gerrit.config文件,記錄當前配置信息。此時文件內容如下:
[gerrit] basePath = git            #制定Git庫存放位置,此時完整路徑是Gerrit_Site下的子目錄git。
canonicalWebUrl = http://localhost:8080/ [database] type = postgresql               #下面填寫剛剛創建好的數據庫信息,注意密碼不會顯式呈現在這個配置文件。
database = gerritdb hostname = localhost username = gerrituser [index] type = LUCENE [auth] type = LDAP [ldap] server = ldap://*         #LDAP認證方式,這里配置涉及敏感信息,省略。
[sendemail] smtpServer = localhost [container] user =XX                  #你的電腦主機名
javaHome = /usr/lib/jvm/jdk1.8.0_31/jre [sshd] listenAddress = *:29418      #通過ssh協議下載時監聽的端口號,默認為29418
[httpd] listenUrl = http://*:8080/      #Gerrit服務器Web界面監聽的端口
[cache] directory = cache
(3)如果需要訪問遠程數據庫,需要修改的部分:
    ——對於Master(這里指創建數據庫的主機)
    a.修改/etc/postgresql/9.4/main/postgresql.conf中
原內容:
#listen_addresses = 'localhost'
修改后(
去掉#注釋符):

listen_addresses = '*' #監聽來自所有ip的訪問數據庫請求
    b.修改/etc/postgresql/9.4/main/pg_hba.conf(hba=host-based authentication)
# IPv4 local connections:
host all all 127.0.0.1/32 md5 host all all 10.64.58.0/24 md5 #新增內容,可以新增若干ip段,表示允許該網段的主機連接與使用數據庫
    ——對於Slaves(這里指有訪問需求的主機)
            注意需要通過交互界面初始化,而不是直接改config文件,因為過程中會要求輸入該database的密碼,這里填遠程主機對應數據庫的密碼。
[database] type = jdbc                        #Gerrit服務器還提供了接口訪問數據庫,人性化,贊~ database = gerritdb                #注意與遠程主機gerrit的database名稱一致 hostname = localhost                      #這里需要改為遠程主機的ip username = gerrituser               #注意與遠程主機管理該database的用戶名一致 url = jdbc:postgresql://Master的IP地址:5432/gerritdb #jdbc的url格式,這里ip指遠程主機的ip,port為PostgreSQL用的port,默認值為5432 driver = org.postgresql.Drive


免責聲明!

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



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