Gerrit的基本介紹
Gerrit 是一個Git服務器,它基於 git 版本控制系統,使用網頁界面來進行審閱工作。Gerrit 旨在提供一個輕量級框架,用於在代碼入庫之前對每個提交進行審閱,更改將上載到 Gerrit,但實際上並不成為項目的一部分,直到它們被審閱和接受 。代碼審查是Gerrit的核心功能,但仍是可選的,團隊可以決定不進行代碼審查而工作。
Gerrit 是一個臨時區域, 在提交的代碼成為代碼庫的一部分之前, 可以對其修改進行檢查。代碼修改的作者將提交作為對 Gerrit 的更改。在Gerrit中,每個更改都存儲在暫存區域中,可以在其中進行檢查和查看。僅當它被批准並提交時,它才被應用到代碼庫中。
其實,Gerrit 就相當於是在開發員將本地修改提交到代碼倉庫之前的一個審核工具。在這個審核工具中,你可以查看該提交者在本次的的提交中的修改,然后再決定是否可以將該修改提交給倉庫。
1. 前期准備
1.1. Jdk安裝
下載網址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- 上傳jdk文件夾 cd /usr/local rz jdk-1.8.0_11
- 添加環境變量vim /etc/profile 添加如下內容:JAVA_HOME根據實際目錄來
- JAVA_HOME=/usr/local/jdk1.8.0_11
- CLASSPATH=$JAVA_HOME/lib/
- PATH=$PATH:$JAVA_HOME/bin
- export PATH JAVA_HOME CLASSPATH
- 執行source /etc/profile刷新環境變量
- 查看版本 java -version
1.2. Git安裝
提示:建議不要用yum -y install git的方式安裝git,這樣安裝的git版本過低,在與gerrit集成過程中可能會出問題,如果已經安裝建議卸載重新安裝
- 安裝git依賴包:yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
- 新建 git目錄,cd /usr/bin/;mkdir git
- 下載wget工具,已有的機器可以不用下載:yum -y install git
- 下載git安裝包 下載地址:wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.12.2.tar.gz
- 解壓git,tar -xzvf **.tar.gz
- 進入 解壓目錄 安裝git:make prefix=/usr/bin/git all make prefix=/usr/bin/git install
- 配置環境變量 vim /etc/profile,export PATH=/usr/bin/git/bin:$PATH,刷新環境變量讓他生效 source /etc/profile ;
- 查看安裝是否成功 git -version
- 生成秘鑰:ssh-keygen,一直回車直到生成
進入到秘鑰界面將公鑰拷貝給運維添加到gitlab上,cd /root/.ssh(還沒有搭建gitlab的忽略)
配置git
git config --global user.name "你的名字"
git config --global user.email "你的郵箱"
git config --global color.ui true 設置語法高亮
1.3. Nginx安裝
1.3.1. 下載Nginx及相關組件
Linux系統是Centos 6.5 64位,我直接切換到root用戶下安裝
進入用戶目錄下載程序
下載相關組件
[root@localhost src]# wget http://nginx.org/download/nginx-1.10.2.tar.gz
省略安裝內容...
[root@localhost src]# wget http://www.openssl.org/source/openssl-fips-2.0.10.tar.gz
省略安裝內容...
[root@localhost src]# wget http://zlib.net/zlib-1.2.11.tar.gz
省略安裝內容...
安裝c++編譯環境,如已安裝可略過
[root@localhost src]# yum install gcc-c++
省略安裝內容...
期間會有確認提示輸入y回車
Is this ok [y/N]:y
省略安裝內容...
1.3.2. 安裝Nginx及相關組件
openssl安裝:
[root@localhost src]# tar zxvf openssl-fips-2.0.10.tar.gz
省略安裝內容...
[root@localhost src]# cd openssl-fips-2.0.10
[root@localhost openssl-fips-2.0.10]# ./config && make && make install
省略安裝內容...
pcre安裝
[root@localhost src]# yum install pcre pcre-devel
省略安裝內容...
zlib安裝
[root@localhost src]# tar zxvf zlib-1.2.11.tar.gz
省略安裝內容...
[root@localhost src]# cd zlib-1.2.11
[root@localhost zlib-1.2.11]# ./configure && make && make install
省略安裝內容...
nginx安裝
[root@localhost src]# tar zxvf nginx-1.10.2.tar.gz
省略安裝內容...
[root@localhost src]# cd nginx-1.10.2
[root@localhost nginx-1.10.2]# ./configure && make && make install
省略安裝內容...
1.3.3. 啟動Nginx
先找一下nginx安裝到什么位置上了
進入nginx目錄並啟動
進入瀏覽器,輸入服務器IP會看到下圖,說明nginx啟動成功
1.4. htpasswd管理工具安裝
htpasswd是Apache的Web服務器內置的工具,用於創建和更新儲存用戶名和用戶基本認證的密碼文件。由於該工具是Apache的Web服務器內置的工具,所以直接安裝Apache,在對應的bin目錄下可以看到該命令。還可以直接安裝httpd-tools這個工具包,比如:yum install httpd-tools
安裝:yum install httpd-tools
中途會有個提示是否繼續,直接回車就可以了
2. Gerrit環境部署
2.1. 下載gerrit
在官方下載最新的Gerrit版本,本文中的版本為3.13
下載地址:https://www.gerritcodereview.com/
2.2. 安裝gerrit
1、新建一個gerrit目錄並上傳安裝包
mkdir gerrit
cd gerrit
rz
開始安裝gerrit
[root@localhost gerrit]# java -jar gerrit-3.1.3.war init -d review_site
根據提示一步步安裝gerrit
*** Gerrit Code Review 3.1.3
***
Create '/usr/local/src/gerrit/review_site' [Y/n]? y
#程序會自動創建該文件,必須輸入”Y“,如果輸入"N"則程序會退出,默認就是"Y",因此我們直接回車應該也可以的
*** Git Repositories
***
Location of Git repositories [git]:/data/gerrit/repository
#指定Git存儲庫,最好指定一個不存在的目錄,他會自動創建。
*** Index***
Type [lucene/?]:
#默認即可。
*** User Authentication***
Authentication method [openid/?]: HTTP
#認證方法輸入HTTP,我們要使用反向代理
Get username from custom HTTP header [y/N]? n
#詢問咱們是否從自定義HTTP頭獲取用戶名,我們輸入”n“
SSO logout URL :
Enable signed push support [y/N]? y
#啟用簽名的推送支持
*** Review Labels***
Install Verified label [y/N]?
#安裝已驗證標簽,默認即可。
SMTP server hostname [localhost]: smtp.exmail.qq.com
#輸入自動發送郵件的smtp服務器,這里我們用的是騰訊企業郵箱
SMTP server port [(default)]: 465
#465/994時SSL協議端口后,25是非SSL協議端口號
SMTP encryption [none/?]: SSL
#如果上一步輸入的是465/994,此處輸入SSL,否則直接回車即可
SMTP username [root]: jsyfzxqa@corp.to8to.com
#此處是你定義自動發送郵件的郵箱地址
jsyfzxqa@corp.to8to.com's password :
#接着我們需要輸入2次咱們郵箱的授權碼。
confirm password :
Run as [root]: #指定容器運行的進程用戶,默認為root用戶,我們默認即可
Java runtime [/yinzhengjie/softwares/jdk1.8.0_201/jre]:
#JAVA的運行環境。如果它識別的有誤,你可以指定你服務器的環境
Copy gerrit-3.1.3.war to review_site/bin/gerrit.war [Y/n]? y
#拷貝gerri安裝包
Copy gerrit-3.1.3.war to review_site/bin/gerrit.war
*** SSH Daemon***
Listen on address [*]: n
#指定SSH后台服務的監聽地址
Listen on port [29418]:
#指定SSH后台服務的端口號
Generating SSH host key ... rsa... ed25519... ecdsa 256... ecdsa 384... ecdsa 521... done
*** HTTP Daemon***
Behind reverse proxy [y/N]? y
#使用發向代理
Proxy uses SSL (https://) [y/N]? n
#不適用SSL
Subdirectory on proxy server [/]:
#指定代理服務器的子目錄,默認為"/"路徑,默認即可
Listen on address [*]:
#只當gerrit服務的監聽地址
Listen on port [8081]: 8888
#指定gerrit的服務端口
Canonical URL [[http://localhost/]:
#指定標准連接,咱們默認即可
*** Cache***
1、安裝插件,全部手動輸入y,然后回車
*** Plugins***
Installing plugins.
Install plugin codemirror-editor version v3.0.0 [y/N]? y
#接下來就是詢問我們是否安裝插件,我們一路”y“ 即可~
Installed codemirror-editor v3.0.0
Install plugin commit-message-length-validator version v3.0.0 [y/N]? y
Installed commit-message-length-validator v3.0.0
Install plugin delete-project version v3.0.0 [y/N]? y
Installed delete-project v3.0.0
Install plugin download-commands version v3.0.0 [y/N]? y
Installed download-commands v3.0.0
Install plugin gitiles version v3.0.0 [y/N]? y
Installed gitiles v3.0.0
Install plugin hooks version v3.0.0 [y/N]? y
Installed hooks v3.0.0
Install plugin plugin-manager version v3.0.0 [y/N]? y
Installed plugin-manager v3.0.0
Install plugin replication version v3.0.0 [y/N]? y
Installed replication v3.0.0
Install plugin reviewnotes version v3.0.0 [y/N]? y
Installed reviewnotes v3.0.0
Install plugin singleusergroup version v3.0.0 [y/N]? y
Installed singleusergroup v3.0.0
Install plugin webhooks version v3.0.0 [y/N]? y
Installed webhooks v3.0.0
Initializing plugins.
Initialized /root/review_site
Reindexing projects: 100% (2/2) with: reindex --site-path review_site --threads 1 --index projects
Reindexed 2 documents in projects index in 0.3s (6.1/s)
Executing /root/review_site/bin/gerrit.sh start
Starting Gerrit Code Review: OK
Waiting for server on node108.yinzhengjie.org.cn:80 ... OK
Opening http://node108.yinzhengjie.org.cn/#/admin/projects/ ...FAILED #一開始這里有個FAILED,讓我耿耿於懷,后來發現貌似對后面的操作沒啥影響。暫時忽略它~
Open Gerrit with a JavaScript capable browser:
http://node108.yinzhengjie.org.cn/#/admin/projects/
You have new mail in /var/spool/mail/root
[root@localhost gerrit]#
注意這里一定要手動按Y,否則不會安裝
安裝完成后可以使用jps命令查看實例是否啟動成功
2.3. 添加gerrit管理員賬號
gerrit默認第一個添加的賬號為管理員賬號
Gerrit服務器使用的是HTTP認證類型,並用httpd做反向代理,創建用戶使用以下命令
cd /usr/local/src/gerrit/review_site/etc
[root@localhost etc]# htpasswd -c gerrit.password admin
New password:
Re-type new password:
Adding password for user admin
根據提示輸入密碼即可(密碼設置為123456),這樣賬號就創建好了。創建完成,httpd和gerrit服務不需要重啟。
2.4. 檢查gerrit配置文件
Gerrit配置文件在etc目錄
cd /usr/local/src/gerrit/review_site/etc
vim gerrit.config
端口和git存儲位置可以自己更改,但是端口位置需要和nginx配置對應起來
2.5. Nginx轉發配置
進入到nginx配置目錄
cd /usr/local/nginx/conf
vim nginx.conf
server {
listen *:6060;
server_name 192.168.2.71;
allow all;
deny all;
auth_basic "Welcomme to Gerrit Code Review Site!";
auth_basic_user_file /usr/local/src/gerrit/review_site/etc/gerrit.password;
location / {
proxy_pass http://192.168.2.71:6061;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
}
2.6. 配置秘鑰
1、gerrit和gitlab服務器生成ssh秘鑰
由於前面在安裝git的時候,我們已經在服務器上生成了ssh秘鑰,這里我就不重復生成了,進入ssh目錄查看下秘鑰。
[root@test07 .ssh]# cd /root/.ssh/
2、分別復制秘鑰到gerrit和gitlab中,使用cat查看秘鑰,然后復制
[root@test07 .ssh]# cat id_rsa.pub
首先復制公鑰到gerrit
添加成功如圖:
然后添加公鑰到gitlab。不同版本的gitlab公鑰添加的地方不一樣,但是都大同小異。一般你之前沒有添加過這一步不會有異常,有異常的自己百度解決。
這種情況可能是提示你這個公鑰被使用,可能是公司已經幫你統一加過秘鑰了,那這個地方就不用加秘鑰了
2.7. 登錄gerrit網站
進入瀏覽器,輸入剛剛部署的服務器ip+端口號
http://192.168.2.71:6060
進入界面會提示要輸入用戶名和密碼,這個時候輸入前面2.3步驟中配置的admin賬號和密碼就可以了。
如果輸入頁面的時候出現403,可以到nginx的logs目錄下查看錯誤日志
本次錯誤的原因是因為nginx配置的密碼文件配置錯誤了。修改成功后正常登錄
此時gerrit已經搭建完畢