Gerrit安裝使用指導
簡介:本指導主要分三部分組成,一是Gerrit的安裝配置,二是本地git的修改提交到Gerrit倉庫,三是代碼審查說明。
一、依賴組件
Gerrit依賴的組件主要有以下四個:
1、 jdk --Gerrit主要由java實現其功能,所以需要jdk支持;
sudo apt-get install openjdk-7-jdk
查看版本java -version
2、 mysql --Gerrit審查過程中存儲信息的數據庫,Gerrit本身自帶H2數據庫一般不用;
安裝mysql
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
3、 Apache2 --主要用到其反向代理功能;
sudo apt-get install apache2
- Gerrit本身相當於是一個Git服務器。
wget https://gerrit-releases.storage.googleapis.com/gerrit-2.12.war
- gerrit安裝
- 添加gerrit用戶
sudo adduser gerrit
sudo passwd gerrit
並將gerrit加入sudo權限
vim /etc/sudoers
增加gerrit ALL=(ALL:ALL) ALL
- 安裝gerrit 到/home/gerrit/review
java -jar gerrit-2.12.4.war init --batch -d ~/review
3、配置gerrit vim /home/gerrit/review/etc/gerrit.config
[gerrit]
basePath = git
#basePath = /home/git/repositories
canonicalWebUrl = http://192.168.7.209:8080/
[database]
type = h2
database = /home/gerrit/review/db/ReviewDB
[index]
type = LUCENE
[auth]
type = HTTP
[receive]
enableSignedPush = false
[oauth]
allowEditFullName = true
allowRegisterNewEmail = true
[sendemail]
#smtpServer = localhost
enable = true
smtpServer = smtp.qiye.163.com
smtpServerPort = 465
smtpEncryption = SSL
sslVerify = true
smtpUser = [email protected]
smtpPass = xxx
from = [email protected]
[container]
user = gerrit
javaHome = /usr/lib/jvm/java-7-openjdk-amd64/jre
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = http://*:8081/
[cache]
directory = cache
- 配置apache2反向代理
1、配置監聽端口:
vim /etc/apache2/ports.conf
Listen 80
Listen 808
2、配置反向代理:
cd /etc/apache2/sites-available/
sudo ln -s ../sites-available/000-default.conf
Vim 000-default.conf配置如下
<VirtualHost *:8080>
ServerName 192.168.7.209
ProxyPreserveHost On
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
AuthType Basic
AuthName "Welcomme to Gerrit Code Review Site!"
Require valid-user
AuthUserFile /etc/apache2/passwords
</Location>
ProxyPass / http://192.168.7.209:8081/
proxyPassReverse / http://127.0.0.1:8081/
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
3、需要WEB訪問的話,使用htpasswd,htpasswd命令是Apache的Web服務器內置工具,用於創建和更新儲存用戶名、域和用戶基本認證的密碼文件。
cd /home/gerrit/review
touch /home/gerrit/review/passwords
htpasswd -b /etc/apache2/passwords admin 123456(管理員)
htpasswd -b /etc/apache2/passwords gerrit 123456
4、開啓反向代理
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 /home/gerrit/review/bin/gerrit.sh restart
sudo /etc/init.d/apache2 restart
- 訪問gerrit 管理界面 http://192.168.7.209:8080/
四、使用gerrit
1.1 賬號密碼
從管理員處獲取賬號密碼後,登錄Gerrit:http://192.168.7.209:8080/
1.2修改名字和郵箱
如郵箱爲xxxx@four-faith.com,則“Full Name”填寫爲xxxx:
註冊郵箱:註冊成功後會給郵箱發送一封郵件,點擊鏈接進行驗證(如果某些瀏覽器無法打開驗證鏈接,複製到IE上打開):
1.3 添加用戶
linux下的用戶名須和管理員給的Gerrit賬號名相同,如果沒有,請添加新用戶:
root@BuildHost:~# adduser gerrit
1.4 添加ssh密鑰
備份.ssh(如果存在的話):
生成密鑰:
rm -rf ~/.ssh
ssh-keygen -t rsa -C “自己郵箱地址” ###一直按回車鍵即可
然後公鑰添加到Gerrit:
把 ~/.ssh/id_rsa.pub 內容複製好
粘貼到
2.1 下載代碼
正確配置好郵箱和ssh公鑰後,根據Gerrit管理員給出的地址下載代碼:
git clone http://192.168.7.209:8080/test_gerrit.git
git clone ssh://[email protected]:29418/test_gerrit.git
2.2 下載commit-msg腳本
【重要:使用Gerrit必須要有此腳本】
提交前在本地倉庫執行
gitdir=$(git rev-parse --git-dir); scp -p -P 29418 [email protected]:hooks/commit-msg ${gitdir}/hooks/
git commit --amend
2.3提交代碼審覈
Gerrit不允許用戶直接push代碼到分支上(特別授權用戶除外),否則報錯:
正確的做法是所有提交都push到 HEAD:refs/for/分支名 :
格式如:git push origin HEAD:refs/for/分支名
例1:
當前處於本地分支master
代碼提交到遠程分支master上,則:git push origin HEAD:refs/for/master
例2:
當前處於本地分支developer
代碼提交到遠程分支deleloper上,則: git push origin HEAD:refs/for/developer
2.4 添加審覈者
代碼正確提交到分支 refs/for/* 後,需要登錄Gerrit界面爲剛纔的提交添加相應的審覈者:
登錄Gerrit:http://192.168.7.209:8080/, 在“changes”下可以看到剛剛的提交,名稱顯示爲剛剛提交所寫的註釋
點擊進入,在“Need Code-Review”下添加相應的代碼審覈者(請根據自己項目情況添加指定的審覈者,此處僅作演示)
如果審覈通過,會收到提示郵件(Code-Review爲正數,說明審覈通過,但代碼未合入分支):
代碼被合入後,會收到郵件提示(說明代碼已經正確提合入到分支):
2.5 審覈失敗再提交
當收到審覈失敗的郵件時(Code-Review爲負數,需要記下Change-Id,下一步提交時會用上),需要修改代碼重新提交:
修改好代碼後,重新提交代碼:
【重要:代碼審覈失敗後,重新提交時必須使用 git commit –amend,否則會生成新的評審任務,無法與上一次審覈任務關聯】
【重要:註釋可以重新寫,但是其中“Change-Id”必須爲上一次審覈任務失敗的Change-Id,可在Gerrit或者上一步的郵件中查看得到】
再push代碼到Gerrit:
最後無需重複步驟“3.3 提交代碼審覈”,Gerrit會自動給原來的審覈者發送相應郵件
3.1 收到審覈郵件
當有審覈任務郵件時,點擊鏈接打開Gerrit
3.2 查閱審覈任務
打開審覈任務如下:
3.3 添加其他審覈者
如果需要,這裏可以添加其他人員審覈(需要有審覈權限)
3.4 查看修改內容
點擊“Side-by-Side”按鈕,查看修改內容:
點擊“next”查閱下一項修改:
3.5 審覈通過/失敗
點擊“Review”
審覈通過:
審覈失敗:
代碼提示被blocked:
Java SDK Download: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
Gerrit Code Review - Releases Download: https://gerrit-releases.storage.googleapis.com/index.html
Gerrit Code Review - Quick get started guide: https://git.eclipse.org/r/Documentation/install-quick.html
Gerrit代碼審覈服務器搭建全過程 http://blog.csdn.net/ganshuyu/article/details/8978614
Gerrit代碼審覈流程 http://www.worldhello.net/gotgit/images/gerrit-workflow.png
Gerrit代碼審覈原理 http://www.worldhello.net/gotgit/05-git-server/055-gerrit.html
Gerrit代碼審覈權限管理 https://gerrit-review.googlesource.com/Documentation/access-control.html#category_forge_committer
Gerrit修改數據庫email信息 http://www.cnblogs.com/kevingrace/p/5624122.html
Gerrit安裝replication插件 https://gerrit-review.googlesource.com/Documentation/cmd-plugin-install.html