Gerrit搭建過程

Gerrit搭建過程

搭建環境 : CentOS 6.5 Gerrit 2.12版本
搭建前的準備工作:
安裝JDK,我安裝的JDK7,直接yum install java
驗證是否安裝完成:java -version
注意,如果不是通過yum安裝,而是下載的tar.gz,解壓安裝的,不要忘了配置JAVA_HOME和環境變量
安裝git, yum install git
驗證是否安裝完成:git –version
安裝MySql數據庫
然後給gerrit建一個庫,並且授權

mysql> create database gerritdb;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON gerritdb.* TO 'gerrit'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON gerritdb.* TO 'gerrit'@'%' IDENTIFIED BY 'password';

Gerrit 安裝

下載:Gerrit 2.12.4 https://www.gerritcodereview.com/download/gerrit-2.12.4.war
創建一個目錄,講gerrit.war放在裏面
創建gerrit目錄:mkdir ~/gerrit
cd 到該目錄下:cd ~/gerrit

然後在終端運行: java -jar gerrit-2.12.4.war init -d review_site

[gerrit@gerrit ~]$ java -jar gerrit-2.12.4.war init -d review_site
Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore

*** Gerrit Code Review 2.12.4
*** 


*** Git Repositories
*** 

Location of Git repositories   [/home/gerrit/git]:          這裏一定要寫git放的目錄,沒有的話自己會創建的

*** SQL Database
*** 

Database server type           [mysql]:                     支持很多種數據庫,我這兒寫mysql
Server hostname                [localhost]: 
Server port                    [(mysql default)]: 
Database name                  [gerritdb]: 
Database username              [gerrituser]: 
Change gerrituser's password   [y/N]? 

*** Index
*** 

Type                           [LUCENE/?]:                          默認就好,直接回車

The index must be rebuilt before starting Gerrit:
  java -jar gerrit.war reindex -d site_path

*** User Authentication
*** 

Authentication method          [HTTP/?]:                            一定要寫http,不然就不是反向代理了,寫development_become_any_account就隨意登陸了
Get username from custom HTTP header [Y/n]? n                       一定要n,不然反向代理gerrit報錯爲缺少一個y的header
SSO logout URL                 : 
Enable signed push support     [y/N]? n

*** Email Delivery
*** 

SMTP server hostname           [smtp.163.com]:                       25端口是163的smtp
SMTP server port               [25]: 
SMTP encryption                [NONE/?]: 
SMTP username                  [[email protected]]: 
Change [email protected]'s password [y/N]? 

*** Container Process
*** 

Run as                         [gerrit]:                              這是用戶,root也可以
Java runtime                   [/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.99-2.6.5.0.el7_2.x86_64/jre]: 
Upgrade review_site/bin/gerrit-2.12.war [Y/n]? y
Copying gerrit-2.12.4.war to review_site/bin/gerrit.war

*** SSH Daemon
*** 

Listen on address              [*]: 
Listen on port                 [29418]: 

*** HTTP Daemon
*** 

Behind reverse proxy           [Y/n]? y
Proxy uses SSL (https://)      [y/N]? n
Subdirectory on proxy server   [/]: 
Listen on address              [127.0.0.1]: 
Listen on port                 [8081]: 
Canonical URL                  [http://gerrit.huanle.com]: 

*** Plugins
*** 

Installing plugins.
Install plugin singleusergroup version v2.12.4 [Y/n]? y
version v2.12.4 is already installed, overwrite it [Y/n]? y
Install plugin commit-message-length-validator version v2.12.4 [Y/n]? y
version v2.12.4 is already installed, overwrite it [Y/n]? y
Install plugin reviewnotes version v2.12.4 [Y/n]? y
version v2.12.4 is already installed, overwrite it [Y/n]? y
Install plugin replication version v2.12.4 [Y/n]? y
version v2.12.4 is already installed, overwrite it [Y/n]? y
Install plugin download-commands version v2.12.4 [Y/n]? y
version v2.12.4 is already installed, overwrite it [Y/n]? y
Initializing plugins.
No plugins found with init steps.

Initialized /home/gerrit/review_site
[gerrit@gerrit ~]$ vim review_site/etc/gerrit.config 
[gerrit@gerrit ~]$ vim sshd_log ^C
[gerrit@gerrit ~]$ ./review_site/bin/gerrit.sh restart
Stopping Gerrit Code Review: OK
Starting Gerrit Code Review: OK
[gerrit@gerrit ~]$

安裝nginx,利用nginx作反向代理
添加一個反向代理的配置文件,如下圖所示,添加了一個gerrit.conf文件
這裏寫圖片描述
文件內容如下,具體怎麼配置可以google或者百度一下nginx怎樣配置:

server {  
         listen *:80;  
         server_name gerrit.huanle.com;
         allow   all;  
         deny    all;  
         auth_basic "Welcomme to Gerrit Code Review Site!";  
         auth_basic_user_file /var/log/nginx/htpasswd.conf;  

         location / {  
            proxy_pass  http://127.0.0.1:8081;  
         }  
       }  

注意這一行配置:auth_basic_user_file /var/log/nginx/htpasswd.conf; 需要創建這個文件,需要創建好,這個文件是用來配置登錄網站的用戶名和密碼,如下圖所示,登錄的時候需要用到
這裏寫圖片描述
安裝htpasswd ,通過這個工具生成上面所述的用戶和密碼
htpasswd -b /var/log/nginx/htpasswd.conf username password

這裏寫圖片描述

重啓nginx服務器sudo /etc/init.d/nginx restart
並且啓動gerrit: ./gerrit.sh start
用戶名和密碼就會生效,注意這個登錄成功後,gerrit纔會將用戶名存儲到數據庫中,登錄後如下所示:
這裏寫圖片描述
這裏寫圖片描述

注意,如果輸入用戶名和密碼報 500 Internal Server Error錯誤的話:就去看一下nginx的錯誤日誌,我出現過,後來看日誌發現是htpasswd.conf沒有讀權限。

Gerrit配置

登錄後去Settings配置SSH Public KEY,就可以使用啦
這裏寫圖片描述

遇到的問題:克隆代碼成功但是無法提交代碼
git clone ssh://[email protected]:29418/huanle-android

git push origin HEAD:refs/for/master

原因是沒有在gerrit配置郵箱地址,用於沒有搭建郵件服務器,沒法再gerrit網頁上爲用戶添加郵箱
只能修改數據庫,添加郵箱,重啓gerrit服務器:

update account_external_ids set email_address = '[email protected]' where account_id = your_acc_id 

還有另外一個錯誤:

remote: ERROR: missing Change-Id in commit message footer
remote: Suggestion for commit message:
remote: 12.2 commit
remote: 
remote: Hint: To automatically insert Change-Id, install the hook:
remote:   gitdir=$(git rev-parse --git-dir); scp -p -P 29418 [email protected]:hooks/commit-msg ${gitdir}/hooks/
remote: 
remote: 

解決方式:

1). 檢查倉儲.git/hook下面是否有 commit-msg 文件,如果沒有, 在gerrit服務器的網址後面加上 /tools/hooks/commit-msg 即可下載。

添加後,每次執行git commit 都會自動在log裏面生成 Change-Id,用於gerrit code review。

創建遠程分支:
git push origin local_branch:remote_branch

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