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


  這個問題折騰了很久,前期后后大概一個月吧,終於搞定了,查了很多資料,有的不完整,有的完全就不能用,有的沒說完整,所以一定要記錄下來,我的心血啊。

  由於公司在用的gerrit的是正式環境中的,大家都在使用,並且這又是個沒接觸過的新的配置,所以,擔心在正式服務器上調試影響大家工作,所以只能在其他機器上搭建一套完整的系統來調試,主要是搭建gerrit平台,網上很多都是apache和mysql之類的,搭建下來配置來配置去都有問題,這里給大家推薦一個“gerrit + apache + nginx”,參考:https://blog.csdn.net/peterxiaoq/article/details/73330314

系統是centos的系統。

准備工作:

  (1)首先安裝jdk,這個就不多說了

  (2)安裝apache:yum install httpd

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

說明:你可能會想,為啥安裝了nginx了還要安裝apache,博客了很清楚的說明了原因,此外這里主要用在執行創建gerrit用戶的時候。

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

1.創建gerrit專有用戶

  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/54924689
https://blog.csdn.net/peterxiaoq/article/details/73330314 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM