ubuntu下gerrit 安裝部署


1.Gerrit簡介

  Gerrit 是一種開放源代碼的代碼審查軟件,使用網頁界面。利用網頁瀏覽器,同一個團隊的軟件程序員,
可以相互審閱彼此修改后的代碼,決定是否能夠提交,退回或是繼續修改。它使用版本控制系統,Git 作為
底層。
  通過Git 推送的代碼由gerrit 接管。如果提交者不具有直接提交權限,任何代碼的修改必須經過Gerrit
的審查,審查通過后才可以合並的主分支。這種審查機制可由管理者自由擬定,Gluster 采用自動化審查加
人工審查的方式。其中Jenkins 負責對代碼的自動化審查,包括編譯錯誤和腳本測試等。只有通過Jenkins
的測試才能進入后續的人工審查。

2.安裝

  2.1 下載地址 http://gerrit-releases.storage.googleapis.com/index.html

  2.2 安裝命令 

java -jar gerrit-2.8.war init -d review-site

3.配置

  Database?server?type [H2/?]:mysql Authentication method [OPENID/?]: http ***HTTP Daemon*** Behind reverse proxy [y/N]? y Proxy uses SSL (https://) [y/N]?
    Subdirectory on proxy server  [/]: /gerrit Listen on address [*]: Listen on port [8081]: Canonical URL [http://localhost/gerrit]:

4.啟動

Executing .../gerrit.sh?start

5.新建passwd文件

mkdir /etc/nginx/passwd htpasswd -c /home/yu/gerrit/passwd/test.passwd test

6.nginx配置

location /gerrit/ { proxy_pass http://127.0.0.1:8081;
        proxy_set_header  X-Forwarded-For $remote_addr; proxy_set_header Host $host; auth_basic "Gerrit Code Review"; auth_basic_user_file /home/yu/gerrit/passwd/test.passwd; }

7.項目搭建

 配置 publicKey 創建項目 項目版本控制(GIT) ①客戶機必須先push到遠程倉庫的refs/for/*分支上,等待審核 ②為了能讓每次commit能自己insert 這個change-id,需要從gerrit server上下載一個腳本 scp -P 29418 -p root@192.168.1.31:/hooks/commit-msg .git/hooks/ ③提交 git push origin HEAD:refs/for/master

8.項目管理

  用戶登錄http://localhost/gerrit。Projects->List 會看到一個All-Projects 的項目,
該項目為默認項目,設置了基本的評審權限。該默認項的作用是給其它項目提供繼承權限,其它項目繼承
All-Projects 的默認設置,避免繁瑣的權限管理配置。

  圖中將會創建一個名為hello 的項目。其中Rights Inherit From 指定了項目的繼承源,選擇
All-Projects。點擊Create Project 完成了對hello 項目的創建,該項目繼承All-Project 的權限

 

9.用戶組

  Pepole->List Groups 查看用戶組,在Gerrit2.8版本中,默認擁有5個用戶組

 

解讀如下:

  • Administrators   Gerrit管理員,該用戶組默認擁有admin用戶,也就是第一個注冊用戶
  • Anonymous User  任何用戶未,登錄或未登錄
  • Non-Interactive Users  Gerrit中執行批處理的用戶
  • Project Owners 項目擁有者
  • Registerd Users 注冊用戶

以上是默認情況,點擊用戶組可以給用戶組添加指定用戶,使指定用戶成為該用戶組的一員

10.權限分配

  Projects->List->All-projects->Acess 查看默認項目的權限分配。

 

解讀如下:

  • Global Capbilities  可以看到Stream Events默認對Non-Interactive Users用戶組開放,Stream Events是

Gerrit的事件流,一旦有代碼改動會被觸發。

  • Reference refs/*  對於所有分支 所有用戶都擁有讀權限,也就是說任何用戶可以clone任何代碼
  • Reference refs/for/refs*  對於for分支,注冊用戶擁有推送、合並、提交權限。
  • Reference refs/head/*  對於head分支中

Push :管理員和項目擁有者具有推送權限,普通用戶是無法直接向head分支推送的  

Submit:管理員和項目擁有者具有提交權限

Label Verified: 這一權限是后來加進去的,為管理員和Non-Interactive Users用戶指定代碼檢查權限。

其中為Non-Interactive Users用戶組增加了jenkins用戶,使jenkins具有了Verified權限。

其評分范圍是-1到1。

Lable Code-Review: 管理員和項目擁有者具以及注冊用戶都有代碼Review權限,其中管理者和項目擁  有者評分范圍是-2到2,注冊用戶評分范圍是-1到1。Geriit中代碼評分為2才能被  commit。這樣做的意義在於:注冊用戶可以參與代碼評審,對其他評審這提供參考  幫助,但是注冊用戶不能直接打2分。

可以看出普通用戶和注冊用戶不能直接向head分支推送代碼,只能向for分支推送。因為head分支是GIt倉庫分支,for分支是gerrit引入的審查分支。代碼在被推送到head分支之前必須經過審查。這里給管理員賦予了head分支的推送權限,管理員可以直接向head推送而無需審查。

 


免責聲明!

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



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