1. 程式人生 > >CentOS下Gerrit程式碼評審伺服器的搭建與使用

CentOS下Gerrit程式碼評審伺服器的搭建與使用

一、準備工作

        安裝CentOS7作業系統,準備Gerrit軟體安裝包:gerrit-2.10.war。

        安裝sendmail:

[[email protected] ~]#yum install -y sendmail

        安裝apache:

[[email protected] ~]#yum install -y httpd

        建立一個使用者用於安裝Gerrit:

[[email protected] ~]#adduser gerrit

二、安裝Gerrit

        首先切換到gerrit使用者:

[[email protected]

~]#su gerrit

[[email protected] root]$cd

[[email protected] ~]$

        安裝Gerrit軟體:

[[email protected] ~]$java -jar gerrit-2.10.war init -d review2

*** Gerrit Code Review 2.10
*** 

Create '/home/gerrit/review2'  [Y/n]? 

*** Git Repositories
*** 

Location of Git repositories   [git]: 

*** SQL Database
*** 

Database server type           [h2]: 

*** Index
*** 

Type                           [LUCENE/?]: 

*** User Authentication
*** 

Authentication method          [OPENID/?]: HTTP
Get username from custom HTTP header [y/N]? 
SSO logout URL                 : 

*** Review Labels
*** 

Install Verified label         [y/N]? 

*** Email Delivery
*** 

SMTP server hostname           [localhost]: 
SMTP server port               [(default)]: 
SMTP encryption                [NONE/?]: 
SMTP username                  : 

*** Container Process
*** 

Run as                         [gerrit]: 
Java runtime                   [/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64/jre]: 
Copy gerrit-2.10.war to /home/gerrit/review2/bin/gerrit.war [Y/n]? 
Copying gerrit-2.10.war to /home/gerrit/review2/bin/gerrit.war

*** SSH Daemon
*** 

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

Gerrit Code Review is not shipped with Bouncy Castle Crypto SSL v149
  If available, Gerrit can take advantage of features
  in the library, but will also function without it.
Download and install it now [Y/n]? 
Downloading http://www.bouncycastle.org/download/bcpkix-jdk15on-149.jar ... !! FAIL !!


error: www.bouncycastle.org
Please download:

  http://www.bouncycastle.org/download/bcpkix-jdk15on-149.jar

and save as:

  /home/gerrit/review2/lib/bcpkix-jdk15on-149.jar

Press enter to continue 
Continue without this library  [Y/n]? 
Generating SSH host key ... rsa(simple)... done

*** 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]: http://10.1.5.116/gerrit

*** Plugins
*** 

Install plugin commit-message-length-validator version v2.10 [y/N]?
Install plugin download-commands version v2.10 [y/N]? 
Install plugin replication version v2.10 [y/N]? 
Install plugin reviewnotes version v2.10 [y/N]? 
Install plugin singleusergroup version v2.10 [y/N]? 

Initialized /home/gerrit/review2
Executing /home/gerrit/review2/bin/gerrit.sh start
Starting Gerrit Code Review: OK
Waiting for server on 10.1.5.116:80 ... OK
Opening http://10.1.5.116/gerrit/#/admin/projects/ ...FAILED
Open Gerrit with a JavaScript capable browser:
  http://10.1.5.116/gerrit/#/admin/projects/
        如果下載bcpkix-jdk15on-149.jar失敗,可以手動下載http://www.bouncycastle.org/download/bcpkix-jdk15on-149.jar,再將bcpkix-jdk15on-149.jar放到/home/gerrit/review2/lib/bcpkix-jdk15on-149.jar。
        設定gerrit開機啟動:

[[email protected] root]$sudo ln -s /home/gerrit/review2/bin/gerrit.sh /etc/init.d/gerrit.sh

[[email protected]

root]$sudo chkconfig --level 345 gerrit.sh on

三、配置Apache反向代理

        在/etc/httpd/init.d中建立gerrit.conf檔案,填入下列內容:

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

SetEnv GIT_PROJECT_ROOT /git-repo/
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/

ServerName localhost

ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

<Location "/gerrit/login/">
AuthType Basic
AuthName "Gerrit Code Review"
AuthBasicProvider file
AuthUserFile /etc/gerrit.passwd
Require valid-user
</Location>
ProxyPass /gerrit http://localhost:8081/gerrit
        重啟httpd服務:

[[email protected] ~]#service httpd restart

        設定httpd開機啟動:

[[email protected] ~]#chkconfig --level 345 httpd on

四、註冊Gerrit使用者

        登入Gerrit伺服器,執行:

        這樣就註冊了一個使用者user1。

        在瀏覽器中輸入:http://10.1.5.116/gerrit,回車(10.1.5.116是gerrit伺服器的IP):

        輸入使用者名稱和密碼,點選“確定”:

        點選"Register New Email"註冊Email:

        填入郵箱地址後,點選“Register”。如果網路沒有問題則註冊郵箱會收到下面的郵件:

Welcome to Gerrit Code Review at 10.1.5.116.

To add a verified email address to your user account, please
click on the following link while signed in as user1:

http://10.1.5.116/gerrit/#/VE/a9ShrHrDxyxviNhDPGF/9YYu9l1NkC716+LOJQ==$MTAwMDAwMTp1c2VyMUB0ZXN0LmNvbQ==

If you have received this mail in error, you do not need to take any
action to cancel the account.  The address will not be activated, and
you will not receive any further emails.

If clicking the link above does not work, copy and paste the URL in a
new browser window instead.

This is a send-only email address.  Replies to this message will not
be read or answered.
        如果Gerrit伺服器沒有連線網路,可以通過mailq命令查詢郵件:


        可以看出這封註冊郵件被延遲了。根據Q-ID查詢被延遲的訊息:

        將連結“http://10.1.5.116/gerrit/#/VE/a9ShrHrDxyxviNhDPGF/9YYu9l1NkC716+LOJQ==$MTAwMDAwMTp1c2VyMUB0ZXN0LmNvbQ==”輸入瀏覽器:

        郵箱註冊成功!

        第一個註冊的使用者自動具有管理員許可權,以後註冊的使用者預設沒有管理員許可權,許可權的修改可以由管理員完成。

        下面說明一下將非第一個註冊的使用者user1設定為管理員的過程。首先需要用具有管理員許可權的使用者登入,點選“People-->List Groups”:


        點選“Administrators”:

輸入使用者名稱:

輸入首字母系統就會列出匹配的條目。選中後點擊“Add”:

user1就稱為管理員使用者組中的一員了,具備了管理員許可權。

user1的預設名稱為“Anonymous Coward”,可以修改一下:


點選“Settings”:


點選“Contact Information”:


在“Full Name”中輸入新名稱:

點選“Save Changes”:


看右上角,名稱已經變了!

下面需要填入客戶端公鑰。建立一個使用者ttt,切換到ttt使用者,執行ssh-keygen生成公鑰:

將id_rsa.pub中的內容全部複製,然後在網頁中點選右上角的全名:

點選“Settings-->SSH Public Keys”:

點選“How to Generate an SSH Key”可以檢視如何生成Public Key:

將複製的公鑰貼上上去:

點選“Add”:

公鑰新增完成!一個使用者可以新增多個公鑰。

五、建立程式碼庫

        點選“Projects->Create New Project”:

在"Project Name"中填入程式碼庫名稱,並選中“Create initial empty commit”:

點選“Create Project”:

在“Description”中填入描述資訊,點選"Save Changes"。點選"Projects-->List":

可見新的程式碼庫已經建立成功。

建立這個程式碼庫的使用者會預設關注這個庫的變化。關注的意思是有程式碼提交等行為時關注這個庫的使用者會收到郵件通知。其它使用者可以設定關注此庫:

點選“Browse”可以檢視已有的程式碼庫:

雙擊選中的庫:

這樣new-repo這個庫就被當前使用者關注了。

我們可以為這個新建立的庫配置許可權,點選“Projects-->LIst-->new-repo-->Access”:


預設new-repo是繼承All-Projects的許可權。點選All-Projects可以編輯全域性許可權,通常全域性許可權編輯完成後新專案不需要再設定許可權(除非有特殊需求)。為說明許可權設定方法,先單獨為new-repo設定本地許可權,本地許可權的優先順序高於全域性許可權。通常設定評審程式碼許可權和提交許可權即可,其中前者是使專案提交的程式碼能夠被評審,後者是允許評審者在評審通過後合入所提交的程式碼。

點選“Edit”:

點選“Add Reference”:

Reference是程式碼提交的目的地(分支或Tag),Gerrit的許可權管理是基於reference進行。預設reference是“refs/heads/*”,這個通常不需要修改。"refs/*"是控制所有提交的reference。點選“Add Permission”:

新增程式碼評審許可權需要選中“Label Code-Review”:

新增組名,使得組內的成員擁有該許可權:

點選“Add”,再點選“Add Reference”新增提交許可權:

選中"Submit":

點選“Save Changes”使設定生效:

六、檢出程式碼

在git bash環境下執行“git config --global credential.helper store”。這樣就可以儲存密碼資訊,不用每次都輸入密碼。

點選"Projects-->List-->new-reo-->Gernal":

點選右下角那個小方框(或雙擊git clone那行字串然後複製),在git bash終端中貼上:

使用者名稱填入user1,密碼的獲取則要麻煩一些。點選右上角的全名:

點選“Settings-->HTTP Password”:

點選“Generate Passsword”:

雙擊“Password”對應的條目,複製密碼,填入"Passwor for"對應的項中:

clone成功!

七、程式碼提交評審

在提交程式碼之前,需要進入到程式碼庫主目錄下執行:

gitdir=$(git rev-parse --git-dir); scp -p -P 29418 [email protected]:hooks/commit-msg ${gitdir}/hooks/
這樣提交的時候日誌中就會自動攜帶Change-ID,提交才能成功:

然後可以用git命令提交程式碼。提交完畢後需要push到Gerrit評審伺服器,push命令為:

git push origin HEAD:refs/for/master

如果提交到名稱為new-branch的分支則提交命令為:

git push origin HEAD:refs/for/new-branch

為簡化命令,編輯new-repo/.git/config:

如圖所示,在[remote "origin"]一行下面新增“push = HEAD:refs/for/master”,這樣就可以用“git push”提交程式碼評審了:

八、評審程式碼

        new-repo庫中有程式碼提交後,關注這個程式碼庫的使用者會收到一個郵件通知:

cool has uploaded a new change for review.

  http://10.1.5.116/gerrit/4

Change subject: add
......................................................................

add

Change-Id: I6cfb4a809b39685df0c62fad0396c0d3d8593057
---
M zzz
1 file changed, 1 insertion(+), 1 deletion(-)


  git pull ssh://10.1.5.116:29418/new-repo refs/changes/04/4/1
-- 
To view, visit http://10.1.5.116/gerrit/4
To unsubscribe, visit http://10.1.5.116/gerrit/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6cfb4a809b39685df0c62fad0396c0d3d8593057
Gerrit-PatchSet: 1
Gerrit-Project: new-repo
Gerrit-Branch: master
Gerrit-Owner: cool <[email protected]>
Gerrit-Reviewer: jason <[email protected]>
在瀏覽器中輸入:“http://10.1.5.116/gerrit/4”:

可以點選畫紅框的“Side-by-SIde”位置檢視diff,點選Review填寫評審意見。填寫評審意見後如果沒有問題可點選“Submit Patch Set1”合入程式碼,如果發現問題則點選“Abandon Change”丟棄修改。

點選“Side-by-SIde”後會彈出頁面:

點選“Review”會進入:

如果沒有發現問題,可以合入程式碼,則在“Code-Review”選項中選擇“+2 Looks ...”;如果程式碼需要合入則必須有人評審而且選擇此選項。

如果沒有發現問題但需要他人同意才能合入程式碼,則選擇“+1 Looks ...”;

如果沒有任何建設性意見則選擇“0 No score”;

如果沒有發現問題但不建議合入則選擇“-1 I would ...”;

如果發現問題不允許合入則選擇“-2 This shall ...”;但如果其他評審人員認為可以合入,且選擇了“+2 Looks ...”,在點選“Submit Patch Set1”時程式碼仍然可以合入。

評審意見可以在Cover Message下面的框中填入(也可以不填),然後點選“Publish Comments”:

點選“Submit Patch Set1”合入程式碼:

可以看到Gerrit顯示程式碼已經成功合入。

在提交程式碼的客戶端上,需要執行"git pull"同步程式碼:

程式碼同步完成。一次程式碼評審過程結束。

相關推薦

CentOSGerrit程式碼評審伺服器搭建使用

一、準備工作         安裝CentOS7作業系統,準備Gerrit軟體安裝包:gerrit-2.10.war。         安裝sendmail: [[email protected] ~]#yum install -y sendmail      

GitLab程式碼管理伺服器搭建配置

        Git是一個應用很廣泛的程式碼管理工具,可以說,寫程式碼不用它,我都無法想象了,哈哈~        對於企業來說,將程式碼託管在GitHub或BitBucket始終不太好,除非你想要將它開源,否則還是自己搭建伺服器來管理比較好,而GitLab就是這樣一款產品

CentOSGit伺服器搭建客戶端(windows和centos搭建

一.伺服器端 1.yum安裝Git伺服器 yum install -y git 2.建立一個git使用者,用來執行git服務 useradd git 3.建立客戶端登入證書 注,收集所有需要登入的使用者的公鑰,就是他們自己生成的id_rsa.pub檔案,把所有公鑰複製到/

LinuxFTP伺服器搭建配置

環境檢查 [[email protected] ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [[email protected] ~]# uname -r 2.6.32-696.el6.x86_64

ubuntu搭建Gerrit程式碼稽核伺服器

谷歌的 Android 開源專案在 Git 的使用上有兩個重要的創新,一個是為多版本庫協同而引入的 repo,另外一個重要的創新就是 Gerrit —— 程式碼稽核伺服器。Gerrit 為 git 引入的程式碼稽核是強制性的,就是說除非特別的授權設定,向 Git 版本庫的推送

Linux CentOS 伺服器搭建初始化配置圖文詳解

轉載自:http://www.linuxidc.com/Linux/2017-07/145878.htm  這幾天對伺服器興趣賊為濃厚,在虛擬機器上裝了一個CentOS7玩了玩,遇到過很多問題,比如網絡卡驅動設定,不能ping 等等問題,然後掏錢買個ECS搭伺服器玩玩,

CentOS是SVN服務的搭建、啟動關閉

CentOS 7 搭建SVN服務 安裝步驟入下: 1、yum install subversion 2、檢視安裝版本  svnserve -- version 3、建立SVN版本庫目錄 mkdir -p /var/svn/svntest 4、建立版本庫  svn

LinuxNFS服務器的搭建配置

linux nfs 一.系統環境# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core)二.安裝NFS服務1、查看系統是否已安裝NFSrpm -qa | grep nfs rpm -qa | grep rpcbind2、安裝NFS

PHP - CentOS開發運行環境搭建(Apache+PHP+MySQL+FTP)

用戶 alt restart 配置 cell system com nologin 阿裏 本文介紹如何在 Linux下搭建一個 PHP 環境。其中 Linux 系統使用是 CentOS 7.3,部署在阿裏雲服務器上。 1,連接登錄服務器 拿到服務器的 ip、初始密碼以後

centos7NFS服務器的搭建配置

-o 信息 http rpcbind nfs服務端 實現 bin nfs 客戶端安裝 準備兩個centos操作系統來實現共享。服務端安裝:查看系統是否已安裝NFS;沒有安裝請先安裝服務。在NFS服務端上創建共享目錄/data/lys並設置權限;編輯export文件命令:mk

伺服器搭建管理(9-1)

1.伺服器: 192.168.9.106 admin 192.168.9.107 node1 192.168.9.108 node2 2.建立deph賬號並賦予sudo許可權:(3臺) 建立賬號 [[email protected] ~]# mkdir /app/userhome -p [[e

伺服器搭建管理(9)

伺服器官網手冊 http://docs.ceph.org.cn/start/quick-ceph-deploy/ 在 CentOS 上,可以執行下列命令[[email protected] ~]# sudo yum install -y yum-utils[[email protecte

Linux:Samba檔案共享伺服器搭建訪問

本文連結: https://blog.csdn.net/xietansheng/article/details/83932033 Samba 是 Linux 和 Unix 系統上實現 SMB協議 的一款免費軟體,能在 Windows、Linux、Mac 系統上訪問 Linux 系統上

CentOSbond網絡卡聚合網橋結合

需求:伺服器配置bond多網絡卡聚合,然後KVM需要使用到網橋,那麼需要做到網橋繫結到bond網絡卡上。 實現核心: 1、bond配置參考:https://www.cnblogs.com/EasonJim/p/10019634.html 2、網橋配置參考:https://www.cnblogs.com/

LiunxNFS服務器的搭建配置

str 64位 服務器 all 過程 color font 命令行 exports 一、NFS簡介 NFS(Network File System)即網絡文件系統,是FreeBSD支持的文件系統中的一種,它允許網絡中的計算機之間通過TCP/IP網絡共享資源。在NFS的應用

樹莓派-FTP伺服器搭建配置

1.安裝vsftpd sudo apt-get install vsftpd 2.啟用FTP服務 sudo service vsftpd start 3.編輯vsftpd的配置檔案,並自定義FTP位置 sudo nano /etc/vsftpd.conf 依照個人所需對以下選項進行定義,如需使用則

DNS伺服器搭建配置

DNS服務簡介: DNS(Domain Name System–域名系統),是因特網的一項服務。它作為將域名和IP地址相互對映的一個分散式資料庫,能夠使人更方便地訪問網際網路。是一個應用層的協議DNS使用TCP和UDP埠53。 DNS是一個分散式資料庫,命名系統

Ubuntu 18.04 ssh伺服器搭建配置

環境:         虛擬機器下的:Ubantu18.04         遠端連線工具:xshell 方法:         1.更新源列表             sudo apt-get update         2.安裝openssh-client

CentOS Storm0.8.2 環境搭建記錄

Storm是Twitter開源的一個實時計算框架,它需要依賴Zookeeper,ZeroMQ;同時還需要你的系統環境中有Java和Python。所以整個搭建步驟如下: 1. 搭建Zookeeper叢集。 2. 在控制節點機[

實戰Samba伺服器搭建進階完整版

實戰Samba伺服器搭建與進階完整版 基礎介紹 smb協議簡介 samba軟體包及核心程序 samba服務 應用場景 實戰samba伺服器搭建 檢查軟體 配置檔案 企業需求 實