Gerrit配置--用戶配置


環境:

Gerrit Server:172.16.206.133 

Client:172.16.206.129

 

1、在Gerrit服務器上創建用戶

Gerrit服務器使用的是HTTP認證類型,並用httpd做反向代理,創建用戶使用以下命令

#cd  /home/gerrit2/gerrit/etc

[root@localhost etc]# htpasswd -m passwords user2

New password: 

Re-type new password: 

Adding password for user user2

根據提示輸入密碼即可(密碼設置為123456),這樣賬號就創建好了。創建完成,httpd和gerrit服務不需要重啟。

 

2、登錄gerrit用戶

用創建的user2賬號訪問gerrit,在瀏覽器地址欄輸入:

http://172.16.206.133:8080

輸入登錄的賬號密碼,賬號為user2,密碼為123456

wKioL1cxh72j3sxnAAH_7PqFtdg542.png

 

3、修改gerrit用戶配置

登錄后,在網頁右上角點擊自己的用戶名,在點擊“settings”。

wKioL1cxT6yh3itBAABV-Z3w2RA103.png

wKiom1cxTvyDOGa1AAIQnIKspGE990.png

settings中就是用戶的配置相關信息,需要注冊郵箱和提交服務器上的公鑰

1、提交公鑰

注意:為什么要提交公鑰文件到gerrit服務器?如果不提交公鑰,則不能使用git push命令將本地代碼提交到gerrit服務器。公鑰是一個認證方式。

在客戶端172.16.206.129這台服務器上創建公、私鑰對,具體命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[user2@host2 root]$  ssh -keygen -t rsa 
Generating public /private  rsa key pair.
Enter  file  in  which  to save the key ( /home/user2/ . ssh /id_rsa ): 
Created directory  '/home/user2/.ssh' .
Enter passphrase (empty  for  no passphrase): 
Enter same passphrase again: 
Your identification has been saved  in  /home/user2/ . ssh /id_rsa .
Your public key has been saved  in  /home/user2/ . ssh /id_rsa .pub.
The key fingerprint is:
fd:da:fa:c5:ec:6c:82:60:1f:39:15: bc :62:ec:51:15 user2@host2
The key's randomart image is:
+--[ RSA 2048]----+
|           . .E. |
|            +    |
|         . . o   |
|         .= o    |
|        So.=     |
|        o =. o   |
|       . o +. +  |
|          oo.+.  |
|          ooooo  |
+-----------------+

生成的密鑰文件如下:

[user2@host2 ~]$ ls .ssh/

id_rsa  id_rsa.pub

id_rsa.pub為公鑰文件,將該文件中的內容,復制並粘貼到settings==>SSH Public Keys中,並點擊Add

wKioL1cxUgfDFUVqAAGq3q-4bWk295.png

測試SSH key是否提交成功,在client 172.16.206.129服務器上執行以下命令:

#ssh -p 29418  user2@172.16.206.133

29418為gerrit上SSH服務器監聽的端口,user2為登錄的gerrit賬號,注意這里我們使用哪個賬號登錄gerrit就使用哪個賬號測試,並且該賬號已經登錄了gerrit服務器,而且公鑰已經上傳。172.16.206.133為gerrit服務器的IP

1
2
3
4
5
6
7
8
9
10
11
[user2@host2 . ssh ]$  ssh  -p 29418 user2@172.16.206.133
The authenticity of host  '[172.16.206.133]:29418 ([172.16.206.133]:29418)'  can't be established.
RSA key fingerprint is 93:d3:47:c2:15:32:f0:41:d9:e6:7f:88:66:01:f3:9b.
Are you sure you want to  continue  connecting ( yes /no )?  yes
Warning: Permanently added  '[172.16.206.133]:29418'  (RSA) to the list of known hosts.
   ****    Welcome to Gerrit Code Review    ****
   Hi user2, you have successfully connected over SSH.
   Unfortunately, interactive shells are disabled.
   To clone a hosted Git repository, use:
   git clone  ssh : //user2 @172.16.206.133:29418 /REPOSITORY_NAME .git
Connection to 172.16.206.133 closed.

可以看到連接成功,說明SSH Public Key上傳成功。

 

為user2注冊郵箱

wKiom1cxU7GAHRFDAAGEtbEIY_0461.png

點擊Register后,登錄你剛才注冊的郵箱,激活即可。

 

 

4、創建用戶組並創建一個項目

注意,只有管理員組的用戶才能創建group和Project

登錄Gerrit管理員賬號admin,創建一個新的組為group2。並將user2賬號加入該組

wKioL1cxVyeQLKvEAAC6XxXWCvc918.png

wKioL1cxVyiieK8VAAGaaMumo9Q911.png

 

新建一個Project,名為Project2

wKioL1cxWsKynVNDAAICK7gAolU605.png

wKioL1cxWsWjwjEwAAMaT5CjD8I516.png

 

5、gerrit代碼審核流程

前面都是准備工作,接下來演示gerrit如何做代碼審核的

a、client server( 172.16.206.129)的git初始配置

配置用戶名和郵箱

#git config --global user.name "user2"

#git config --global user.email "YOUR EMAIL-ADDRESS"

 

b、用賬戶user2登錄gerrit 

在Projects==> List中找到Projects2,然后點擊Clone with commit-msg hook, 在點擊ssh按鈕,

復制ssh下面項目地址:

1
git clone  ssh : //user2 @172.16.206.133:29418 /Project2  &&  scp  -p -P 29418 user2@172.16.206.133:hooks /commit-msg  Project2/.git /hooks/

直接將剛才復制的命令,在client server的命令行運行

1
git clone  ssh : //user2 @172.16.206.133:29418 /Project2  &&  scp  -p -P 29418 user2@172.16.206.133:hooks /commit-msg  Project2/.git /hooks/

 

注意:步驟b一定選Clone with commit-msg hook下面的地址來clone,否則在客戶端使用git push

命令提交代碼時會報錯。如果不需要向gerrit服務器提交代碼,那么你只需使用

git clone ssh://user2@172.16.206.133:29418/Project2

或者git clone http://user2@172.16.206.133:8081/a/Project2

 

 

c、創建一個文件,並提交到gerrit服務器端

1
2
3
4
[user2@host2 Project2]$ vim  test .sh 
aaaaaaaaaaaaa
bbbbbbbbbbbbb
ccccccccccccc

用git add 和git commit命令將文件保存到git倉庫中

1
2
3
4
5
[user2@host2 Project2]$ git add  test .sh 
[user2@host2 Project2]$ git commit -m  "創建了test.sh文件"
[master 16462e9] 創建了 test .sh文件
  1 files changed, 3 insertions(+), 0 deletions(-)
  create mode 100644  test .sh

 

d、用git push命令將代碼從本地傳到gerrit服務器對象項目下的master分支

1
2
3
4
5
6
7
8
9
10
11
12
[user2@host2 Project2]$ git push origin master:refs /for/master
Counting objects: 4,  done .
Compressing objects: 100% (2 /2 ),  done .
Writing objects: 100% (3 /3 ), 341 bytes,  done .
Total 3 (delta 0), reused 0 (delta 0)
remote: Processing changes: new: 1, refs: 1,  done    
remote: 
remote: New Changes:
remote:   http: //172 .16.206.133:8081 /5  創建了 test .sh文件
remote: 
To  ssh : //admin @172.16.206.133:29418 /Project2
  * [new branch]      master -> refs /for/master

origin:遠程倉庫的名稱,用git remote 可以查看所有的遠程倉庫名稱

1
2
[user2@host2 Project2]$ git remote 
origin
1
master:refs /for/master  表示將代碼從本地的master分支傳到遠端的master分支,固定格式就是這樣

 

e、用user2賬號登錄Gerrit Web UI,邀請管理員admin來做code review。

注意:之前忘記截圖了,所以下圖不是原圖,但是基本上都一樣,只有Owner和Project不對而已。

Add:添加指定用戶來進行Code Review

Cherry Pick:切換分支,當執行push操作之后如果發現分支不對,需要切換,可以在這里點擊Cherry Pick按鈕進行分支切換操作。

Abandon:撤銷push操作,當push之后,如果發現代碼有問題,需要修改,可以點擊這個按鈕,然后修改代碼,修改完成后,再次push,然后登陸Gerrit Web UI,會有一個Restore按鈕,這時候點擊Restore,就可以重新申請Code Review。

Rebase和Follow-Up沒有找到相關資料wKioL1c6xyeAx7QTAAEVKOf0oBY681.png

 

 

 

 

 

e、看看Gerrit服務器上是否有code review的信息

登錄gerrit管理員賬號admin,在ALL下面點擊“Open”,看到“創建了test.sh”這條記錄。

這里“創建了test.sh文件”就是git commit -m "創建了test.sh文件" 這條命令產生的

wKioL1cxd0KC9IBEAAJt4--8EoI491.png

點開這條記錄,看到以下信息

 

wKioL1cxd0biNku7AARvdB2TlY4241.png

 

我們可以點開test.sh文件看到里面的內容

wKioL1cxeGuDJUuNAAEkJvYYuEs066.png

 

還可以看到提交者的信息:

wKioL1cxeRrASYpkAAEtZeZW_es670.png

這里顯示的用戶名和郵箱地址其實是在client server上初始化git時,用以下命令配置的

#git config --global user.name "user2"

#git config --global user.email "YOUR EMAIL-ADDRESS"

 

點擊上上圖中的code review和replay進行代碼審核

wKiom1cxebSB85xGAAEUOX7Xn3A497.png-2 表示不通過,+2表示代碼ok可以通過審核,目前還沒有深究這個,我理解的就是這樣子的。

審核后可以看到審核的日志

wKioL1cxe1iyH_XTAAEcFP-mH0E976.png

 

以上就是gerrit代碼審核的流程,gerrit倉庫是純粹的代碼倉庫,不存在work tree這個說法。所以在gerrit倉庫里面執行git命令都會報錯:

1
2
[root@localhost Project2.git] # git status
fatal: This operation must be run  in  a work tree

但是,如果用git clone將gerrit倉庫里面的項目clone下來后,就自動變成了一個git倉庫。


免責聲明!

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



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