gerrit上的commit msg中關聯jira單號(含gerrit的安裝)

  這個問題折騰了好久,前期後後大概一個月吧,終於搞定了,查了不少資料,有的不完整,有的徹底就不能用,有的沒說完整,因此必定要記錄下來,個人心血啊。html

  因爲公司在用的gerrit的是正式環境中的,你們都在使用,而且這又是個沒接觸過的新的配置,因此,擔憂在正式服務器上調試影響你們工做,因此只能在其餘機器上搭建一套完整的系統來調試,主要是搭建gerrit平臺,網上不少都是apache和mysql之類的,搭建下來配置來配置去都有問題,這裏給你們推薦一個「gerrit + apache + nginx」,參考:https://blog.csdn.net/peterxiaoq/article/details/73330314java

系統是centos的系統。mysql

準備工做:nginx

  (1)首先安裝jdk,這個就很少說了git

  (2)安裝apache:yum install httpdweb

  (3)安裝nginx: 參考https://blog.csdn.net/zql3315/article/details/54924689   (備註:執行1,2就好了)sql

說明:你可能會想,爲啥安裝了nginx了還要安裝apache,博客了很清楚的說明了緣由,此外這裏主要用在執行建立gerrit用戶的時候。apache

接下來就開始安裝gerrit了,參考博客就行,我把其中重要的部分撿了出來,vim

1.建立gerrit專有用戶centos

  adduser gerrit

  su gerrit

2.建好用戶之後,咱們能夠把以前下載好的gerrit安裝包(gerrit-2.13.4.war)拷貝到 /home/gerrit/目錄下,一會方便gerrit用戶來安裝

 在gerrit用戶的目錄(/home/gerrit/)下面,執行命令:

 java -jar gerrit-2.13.4.war init -d ~/gerrit_site

 咱們安裝的時候,能夠只在 Authentication method 時輸入 http ,以及安裝插件時輸入「y」,(默認插件是不安裝的),其餘所有回車用默認值,以下這裏:

 (1)Authentication method          [OPENID/?]: http  
  (2)Installing plugins.  
    Install plugin download-commands version v2.11 [y/N]?  
    Install plugin reviewnotes version v2.11 [y/N]?     Install plugin singleusergroup version v2.11 [y/N]?     Install plugin replication version v2.11 [y/N]?     Install plugin commit-message-length-validator version v2.11 [y/N]?

 由於其餘配置咱們待會能夠經過 etc/gerrit.config 文件進行修改。

  還須要修改listenUrl =http://*:8080/,在http前面加"proxy-  "

到此個人gerrit.config文件內容以下(重點部分如紅色標記):

  [gerrit]
    basePath = git
    canonicalWebUrl = http://192.168.8.204:8080/
  [database]
    type = h2
    database = /home/gerrit/gerrit_site/db/ReviewDB
  [index]
    type = LUCENE
  [auth]
    type = HTTP
  [receive]
    enableSignedPush = false
  [sendemail]
    smtpServer = localhost
  [container]
    user = gerrit
    javaHome = /usr/java/jdk1.8.0_101/jre
  [sshd]
    listenAddress = *:29418
  [httpd]
    listenUrl = proxy-http://*:8080/
[cache]
directory = cache

 

 

3.nigix配置:

 你的nginx應該是用root帳戶安裝的,不然可能出現權限問題。咱們須要從以前的gerrit用戶退出來,而後執行下面兩條命令:

  cd /etc/nginx/conf.d ; touch gerrit.conf

  而後 vim gerrit.conf,輸入以下內容:

  server {
    listen *:81;
    server_name 192.168.8.204; (根據本身的實際狀況,輸入的是gerrit主機ip)
    allow all;
    deny all;

    auth_basic "Welcomme to Gerrit Code Review Site!";
    auth_basic_user_file /home/gerrit/gerrit.password;

    location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    }
  }
   而後重啓nginx:

    service nginx restart

4.登錄認證文件

上面的gerrit.conf文件中,咱們看到了:auth_basic_user_file /home/gerrit/gerrit.password,這裏咱們須要用apach的 htpasswd 工具來新建這個文件,這也是爲何咱們雖然不用到apache的反向代理,仍然須要apache的緣由。

  htpasswd -c /home/gerrit/gerrit.password admin  

  而後輸入密碼就能夠了,這個密碼會被加密(通常狀況下,我更偏向於用戶名和密碼設置成同樣的,方便記憶,好比個人用戶名密碼都是admin)

-c表示create,若是咱們想新建別的用戶,或者修改某個用戶的密碼,只須要把 -c 改爲 -m 就行了,若是仍是用 -c 而且路徑不變的話,就會覆蓋掉原來的文件。

注意 :

若是你是在root用戶下輸入上面的命令 建立了 gerrit.password 文件到 /home/gerrit/ 目錄中,你會發如今登陸的時候永遠登陸不成功,永遠會獲得服務器500的錯誤頁面。緣由是 /homt/gerrit/ 文件夾的權限問題。

咱們知道, /home/gerrit/ 是咱們以前新建的gerrit用戶的,那麼這個文件夾的權限是700,也就是隻容許gerrit用戶訪問,其餘組的用戶是訪問不了的,雖然這個文件的權限擁有root用戶的全部權限,可是由於它放在700權限的文件夾下面,因此一樣其餘用戶是訪問不到的

這個問題以前糾纏了我很久,經過nginx的日誌能夠清楚的看到訪問拒絕的錯誤。

因此,咱們須要經過下面的命令,來改變gerrit目錄的權限

chmod 755 /home/gerrit

這樣,當前目錄權限就變成了 drwxr-xr-x ,也就是其餘組的用戶也擁有了讀取和執行的權利。

5.重啓gerrit服務

  如上,個人gerrit的安裝路徑是/home/gerrit/gerrit_site,進入到這裏目錄,而後進入到裏面的bin目錄,咱們看到一個gerrit.sh的文件,執行命令:

  sh gerrit.sh restart

6.登錄網頁

  在瀏覽器上輸入http://192.168.8.204:81便可,而後輸入剛纔步驟4裏的用戶名密碼便可。而後回引導你作基本的設置,填寫fullname 和'SSH Public Keys',這兩個都很簡答,就不細說了,ssh public keys是爲了能下載代碼。建立一個新的工程test,你就能夠在本地下載代碼了(ssh public keys和電腦是強相關的,若是你要在主機A上下載,就要把主機A的public key放上去,若是要在主機B上下,就要把主機B的public key放上去,若是主機重裝系統了,你必須從新生成public key放上去,複雜不能下載;個人生成命令:ssh-keygen -t rsa -C anl@hpplay.cn;cat ~/.ssh/id_rsa.pub (public key還有其餘生成方式,根據本身的狀況能夠參考其餘人的)

 7.commit-msg關聯jira單號

  查了不少,關於這方面的資料不多,而且有的說要裝插件,但是我仍是不行,其實簡單的改下gerrit.config的配置就能夠了,如上,個人gerrit路徑是/home/gerrit/gerrit_site,修改這個目錄下的etc/gerrit.config,添加以下內容:

  [commentlink "jira"]

    match = ([A-Z]+-[0-9]+)
    link = http://你的jira_url/browse/$1  

其中link中須要填寫你的jira的url,好比個人是「link = http://jira.hpplay.cn:6060/browse/$1 」

你可能會問,「$1」是什麼,要怎麼傳入,他怎麼識別提交的commit message的哪些是單號,至少要有個什麼標誌之類的,怎麼觸發這個配置生效呢,開始的時候,我也一直在思考這些問題,也一直想不明白,而後就先放一下(後面想通了,這個$1對應的就是math匹配到的字段,格式是「大寫字母-數字」),重啓了gerrit服務(sh  /home/gerrit/gerrit_site/bin/gerrit.sh restart ), 並提交了一次代碼,刷新界面或者從新登錄,commit message中包含了個人jira單號,結果達到效果了,以下:

  

看,變成藍色的超連接了,點擊就能夠打開jira上這個單號的詳細內容,以下:

到此,gerrit上的commit message中關聯jira單號算是打通。這樣作的好處,是方便代碼review的時候能方便看到具體解決了什麼問題。

 

 若是你在參考本博客配置的過程當中有什麼問題,歡迎留言。

 

其餘備註:

(1)yum install -y gitweb  安裝gitweb 我的以爲沒什麼用
(2)ssh -p 29418 gerrit@192.168.8.204 gerrit plugin ls 查看已經安裝的插件

(3)fatal: remote installation is disabled  要開啓,配置以下:

  [plugins]
    allowRemoteAdmin = true

(4)ssh -p 29418 admin@192.168.8.204 gerrit plugin ls報錯Permission denied (publickey):
    參考:https://blog.csdn.net/pengjin1985/article/details/7789909

(5)插件安裝:

  參考:http://192.168.8.204:8080/Documentation/cmd-plugin-install.html
  ssh -p 29418 admin@192.158.8.204 gerrit plugin install -n download-commands -<download-commands.jar
  ssh -p 29418 admin@192.158.8.204 gerrit plugin install -n download-commands.jar -<./tools/download-commands.jar

 

 

command 注意點備份:

su gerrit
java -jar gerrit-2.12.4.war init -d ~/gerrit_site
驗證類型必定要選http
最後的gerrit插件直接會出默認是不安裝的,因此若是要安裝要選y纔會安裝
ssh -p 29418 admin@192.168.8.204 gerrit plugin ls
vim gerrit_site/etc/gerrit.config
listenUrl = proxy-http://*:8080/
[plugins]
allowRemoteAdmin = true

sh gerrit_site/bin/gerrit.sh start
exit

若是是很久沒用機器了,記得先啓動nginx,而後再啓動gerrit:  service nginx restart;sh gerrit_site/bin/gerrit.sh start

http://192.168.8.204:81
admin admin
cat ~/.ssh/id_rsa.pub
systemctl status nginx
systemctl start nginx #啓動
systemctl stop nginx #中止
systemctl restart nginx #重啓
systemctl status nginx #查看運行狀態
ssh -p 29418 admin@192.168.8.204 gerrit plugin install -n download-commands.jar /home/gerrit/tools/download-commands.jar
mysql -u root -p123456

gerrit新用戶權限開通命令:
htpasswd -b /home/gerrit/gerrit.password username password

gerrit搭建參考:

https://blog.csdn.net/zql3315/article/details/54924689https://blog.csdn.net/peterxiaoq/article/details/73330314 

相關文章
相關標籤/搜索