搭建git+gerrit+repo代碼

    以下內容親測驗證通過。

    Git是目前最流行的分佈式版本控制系統,而Gerrit是一種免費、開放源代碼的代碼審查軟件,使用網頁界面。利用瀏覽器,同一個團隊的軟件程序員,可以相互審閱彼此修改後的程序代碼,決定是否能夠提交,退回或者繼續修改。它使用Git作爲底層版本控制系統。趁着做測試的機會,簡單學習瞭解一下Git+Gerrit是如何搭建使用的,順便簡單做個小筆記。

1:安裝git

sudo apt-get install git-core openssh-server openssh-client

2:安裝Gerrit

    首先建立gerrit用戶:

sudo adduser gerrit
sudo passwd gerrit
su gerrit

 gerrit是由java開發的,封裝成了一個war包,所以需要java環境,首先在服務器端執行java --version查看一下有沒有配置好java環境。這裏我下載:jdk-7u45-linux-i586.tar.gz使用下面命令安裝:

sudo tar zxvf ./jdk-7u45-linux-i586.tar.gz -C /opt

    然後配置環境變量:

vim ~/.bashrc
添加如下內容:
JAVA_HOME=/opt/jdk1.7.0_45
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

    下載gerrit。這裏我直接在百度上搜索gerrit某個固定版本,gerrit的war包,通常包名爲gerrit-xxx.war,xxx爲版本號,這裏我下載gerrit-2.11.war。

    安裝gerrit:

java -jar gerrit-2.11.war init -d review_site
    基本上一路回車就可以了,注意其中身份驗證時我選擇了HTTP,此認證方式需要配置apache的反向代理,當然也有其他認證方式可選。這裏選擇http認證方式,並在apache中配置web站點的口令認證,通過口令認證後gerrit在創建賬號的過程中會詢問用戶的郵件地址併發送郵件。gerrit數據庫選擇默認的H2即可。

Behind reverse proxy           [y/N]? y

這裏配置反向代理,選擇y

  配置gerrit:

vim review_site/etc/gerrit.config
[gerrit]                                                                                                                        
     basePath = git
     canonicalWebUrl = http://192.168.1.252:8080/
[database]
     type = h2
     database = db/ReviewDB
[index]
     type = LUCENE
[auth]
     type = HTTP
[sendemail]
     smtpServer = smtp.exmail.qq.com
     smtpServerPort = 465
     smtpEncryption = SSL
     smtpUser = [email protected]
     smtpPass = emailpasswd
     from = [email protected]
[container]
     user = gerrit
     javaHome = /opt/jdk1.7.0_45/jre
[sshd]
     listenAddress = *:29418
[httpd]
     listenUrl = proxy-http://*:8081/
[cache]
     directory = cache
  安裝apache2服務器:
sudo apt-get install --reinstall apache2  apache2.2-common
  配置apache2服務器:

  開啓代理功能、複寫功能:

cd /etc/apache2/mods-enabled
ln -s ../mods-available/proxy.load 
ln -s ../mods-available/proxy.conf
ln -s ../mods-available/proxy_http.load
ln -s ../mods-available/proxy_balancer.conf
ln -s ../mods-available/proxy_balancer.load
ln -s ../mods-available/rewrite.load
ln -s ../mods-available/ssl.conf
ln -s ../mods-available/ssl.load
 配置apache2的監聽端口:

vim /etc/apache2/port.conf
NameVirtualHost *:80
NameVirtualHost *:8080	//添加
Listen 80
Listen 8080	//添加
 配置反向代理:
sudo vim /etc/apache2/httpd.conf

<VirtualHost *:8080>                                                                                                            
     ServerName 192.168.1.252
     ProxyRequests Off
     ProxyVia Off
     ProxyPreserveHost On
     AllowEncodedSlashes On
     RewriteEngine On
     RewriteRule ^/(.*) http://192.168.1.252:8081/$1 [NE,P]
 
     <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/etc/passwd
     </Location>
 
     ProxyPass / http://192.168.1.252:8081/
 
</VirtualHost>
 在主機配置文件中加入httpd.conf,使其生效:
sudo vim /etc/apache2/apache2.conf
加入include httpd.conf	如果有就不用加了
 設置第一個gerrit用戶的賬號和密碼:
touch ./review_site/etc/passwd
htpasswd -b ./review_site/etc/passwd admin admin
 (後續再添加gerrit用戶可使用:$:htpasswd -b ./review_site/etc/passwd UserName PassWord)

 啓動gerrit服務:
./review_site/bin/gerrit.sh start
 重啓apache2服務:
sudo /etc/init.d/apache2 restart
 到這裏基本就配置的差不多了,在客戶端訪問http://192.168.1.252:8080/,用剛纔創建的admin用戶登錄,系統自動將該用戶註冊爲gerrit賬戶。(注:第一個登錄的用戶自動註冊爲管理員(gerrit賬號ID爲1000000的賬號))

 注意:用htpasswd命令創建HTTP認證時,並沒有在gerrit數據庫中創建賬號信息,當登錄成功後,gerrit會自動創建同名的gerrit用戶。如果在htpasswd命令創建賬號之前,gerrit數據庫中已經存在同名的gerrit用戶(如:直接通過操作數據庫添加的),那麼web登錄時,不會講htpasswd命令創建的賬號和gerrit數據庫中的同名用戶關聯起來,而是自動新創建一個gerrit用戶與之關聯(即一個新的gerrit用戶ID),而且會要求你手動輸入gerrit用戶名。

 gerrit網頁端配置:

 登錄,瀏覽器輸入192.168.1.252:8080回車驗證身份:


 賬戶信息配置,點擊右上角Settings:



 Contact Information配置全名和郵箱,全名會在右上角顯示,郵箱用戶後續操作中會有提示作用。

 添加個人公鑰:只有添加公鑰之後,本地用戶才能訪問服務器的代碼庫。


 到這裏基本配置完成。接下來在本地安裝repo。

3:安裝repo

 下載repo.git:

mkdir -p ~/gitCfg
cd ~/gifCfg
git clone http://gerrit.googlesource.com/git-repo git-repo.git
如果上面的地址無法連接,可以嘗試下面的地址:
git clone http://review.mfunz.com/git-repo git-repo.git
 配置repo:

 將git-repo.git目錄下的repo拷貝到/usr/bin/目錄下:

cd git-repo.git
sudo cp repo /usr/bin/repo
 這時所以的準備工作都完成了,這裏在客戶端可以測試ssh是否可以連接:執行ssh -p 29418 192.168.1.252,如果連接成功,就可以做接下來的工作了,成功連接提示如下:這裏我重新創建了一個gerrit賬號:


 這個時候代表ssh連接成功,我們就可以操作gerrit服務器和代碼服務器了。

 首先repo只是一個python寫的腳本程序,是對git命令的封裝,git用來管理單個的git倉庫,而repo是用來管理多個被git管理的git倉庫的,repo的核心就是清單庫文件,repo指令會通過制定的清單文件來下載多個或者單個git倉庫。這裏我們首先創建清單庫,並建立默認的清單文件。

 創建清單庫:

ssh -p 29418 [email protected] gerrit create-project --empty-commit --name manifest
ssh -p 29418 [email protected] gerrit create-project --empty-commit --name test

 這個時候就可以在gerrit web頁面的project->Lists下面看到manifest和test倉庫了。repo默認的清單文件是default.xml來官氣其他倉庫的,這裏先clone清單庫,並創建清單文件:



     創建清單文件default.xml,內容如下:


    然後將default.xml推送到manifest倉庫:

git add default.xml
git commit -m “add default.xml” default.xml
git push orgin HEAD:refs/for/master   //這句話是推送到gerrit,可以通過管理員審覈,然後合併
    最後其他用戶可以直接通過repo init來任意下載所有被管理的倉庫代碼,這裏我只創建了一個唄管理的test倉庫,做演示:
repo init -u ssh://[email protected]:29418/manifest.git
//這裏會在當前目錄下生成.repo目錄,裏面會包含完整的repo和清單庫
repo sync		//這裏會根據清單庫的xml文件來同步下載xml裏面的project標籤定義的所以項目
   這個時候就可以看到test倉庫了,可以在其下面添加各種代碼,然後推送到gerrit服務器,添加審覈人員,審覈通過之後,會自動合併到遠程代碼服務器。

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