CentOS下Gerrit代码评审服务器的搭建与使用

CentOS下Gerrit代码评审服务器的搭建与使用

一、准备工作

        安装CentOS7操作系统,准备Gerrit软件安装包:gerrit-2.10.war。

        安装sendmail:

[root@localhost ~]#yum install -y sendmail

        安装apache:

[root@localhost ~]#yum install -y httpd

        创建一个用户用于安装Gerrit:

[root@localhost ~]#adduser gerrit

二、安装Gerrit

        首先切换到gerrit用户:

[root@localhost ~]#su gerrit

[gerrit@localhost root]$cd

[gerrit@localhost ~]$

        安装Gerrit软件:

[plain]  view plain  copy
  1. [gerrit@localhost ~]$java -jar gerrit-2.10.war init -d review2  
  2.   
  3. *** Gerrit Code Review 2.10  
  4. ***   
  5.   
  6. Create '/home/gerrit/review2'  [Y/n]?   
  7.   
  8. *** Git Repositories  
  9. ***   
  10.   
  11. Location of Git repositories   [git]:   
  12.   
  13. *** SQL Database  
  14. ***   
  15.   
  16. Database server type           [h2]:   
  17.   
  18. *** Index  
  19. ***   
  20.   
  21. Type                           [LUCENE/?]:   
  22.   
  23. *** User Authentication  
  24. ***   
  25.   
  26. Authentication method          [OPENID/?]: HTTP  
  27. Get username from custom HTTP header [y/N]?   
  28. SSO logout URL                 :   
  29.   
  30. *** Review Labels  
  31. ***   
  32.   
  33. Install Verified label         [y/N]?   
  34.   
  35. *** Email Delivery  
  36. ***   
  37.   
  38. SMTP server hostname           [localhost]:   
  39. SMTP server port               [(default)]:   
  40. SMTP encryption                [NONE/?]:   
  41. SMTP username                  :   
  42.   
  43. *** Container Process  
  44. ***   
  45.   
  46. Run as                         [gerrit]:   
  47. Java runtime                   [/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64/jre]:   
  48. Copy gerrit-2.10.war to /home/gerrit/review2/bin/gerrit.war [Y/n]?   
  49. Copying gerrit-2.10.war to /home/gerrit/review2/bin/gerrit.war  
  50.   
  51. *** SSH Daemon  
  52. ***   
  53.   
  54. Listen on address              [*]:                         
  55. Listen on port                 [29418]:   
  56.   
  57. Gerrit Code Review is not shipped with Bouncy Castle Crypto SSL v149  
  58.   If available, Gerrit can take advantage of features  
  59.   in the library, but will also function without it.  
  60. Download and install it now [Y/n]?   
  61. Downloading http://www.bouncycastle.org/download/bcpkix-jdk15on-149.jar ... !! FAIL !!  
  62.   
  63.   
  64. error: www.bouncycastle.org  
  65. Please download:  
  66.   
  67.   http://www.bouncycastle.org/download/bcpkix-jdk15on-149.jar  
  68.   
  69. and save as:  
  70.   
  71.   /home/gerrit/review2/lib/bcpkix-jdk15on-149.jar  
  72.   
  73. Press enter to continue   
  74. Continue without this library  [Y/n]?   
  75. Generating SSH host key ... rsa(simple)... done  
  76.   
  77. *** HTTP Daemon  
  78. ***   
  79.   
  80. Behind reverse proxy           [y/N]? y  
  81. Proxy uses SSL (https://)      [y/N]?   
  82. Subdirectory on proxy server   [/]: /gerrit  
  83. Listen on address              [*]:   
  84. Listen on port                 [8081]:   
  85. Canonical URL                  [http://localhost/gerrit]: http://10.1.5.116/gerrit  
  86.   
  87. *** Plugins  
  88. ***   
  89.   
  90. Install plugin commit-message-length-validator version v2.10 [y/N]?  
  91. Install plugin download-commands version v2.10 [y/N]?   
  92. Install plugin replication version v2.10 [y/N]?   
  93. Install plugin reviewnotes version v2.10 [y/N]?   
  94. Install plugin singleusergroup version v2.10 [y/N]?   
  95.   
  96. Initialized /home/gerrit/review2  
  97. Executing /home/gerrit/review2/bin/gerrit.sh start  
  98. Starting Gerrit Code Review: OK  
  99. Waiting for server on 10.1.5.116:80 ... OK  
  100. Opening http://10.1.5.116/gerrit/#/admin/projects/ ...FAILED  
  101. Open Gerrit with a JavaScript capable browser:  
  102.   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开机启动:

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

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

三、配置Apache反向代理

        在/etc/httpd/init.d中创建gerrit.conf文件,填入下列内容:

[plain]  view plain  copy
  1. <Directory />  
  2. Options FollowSymLinks  
  3. AllowOverride None  
  4. </Directory>  
  5.   
  6. SetEnv GIT_PROJECT_ROOT /git-repo/  
  7. SetEnv GIT_HTTP_EXPORT_ALL  
  8. ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/  
  9.   
  10. ServerName localhost  
  11.   
  12. ProxyRequests Off  
  13. ProxyVia Off  
  14. ProxyPreserveHost On  
  15.   
  16. <Proxy *>  
  17. Order deny,allow  
  18. Allow from all  
  19. </Proxy>  
  20.   
  21. <Location "/gerrit/login/">  
  22. AuthType Basic  
  23. AuthName "Gerrit Code Review"  
  24. AuthBasicProvider file  
  25. AuthUserFile /etc/gerrit.passwd  
  26. Require valid-user  
  27. </Location>  
  28. ProxyPass /gerrit http://localhost:8081/gerrit  
        重启httpd服务:

[root@localhost ~]#service httpd restart

        设置httpd开机启动:

[root@localhost ~]#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”。如果网络没有问题则注册邮箱会收到下面的邮件:

[plain]  view plain  copy
  1. Welcome to Gerrit Code Review at 10.1.5.116.  
  2.   
  3. To add a verified email address to your user account, please  
  4. click on the following link while signed in as user1:  
  5.   
  6. http://10.1.5.116/gerrit/#/VE/a9ShrHrDxyxviNhDPGF/9YYu9l1NkC716+LOJQ==$MTAwMDAwMTp1c2VyMUB0ZXN0LmNvbQ==  
  7.   
  8. If you have received this mail in error, you do not need to take any  
  9. action to cancel the account.  The address will not be activated, and  
  10. you will not receive any further emails.  
  11.   
  12. If clicking the link above does not work, copy and paste the URL in a  
  13. new browser window instead.  
  14.   
  15. This is a send-only email address.  Replies to this message will not  
  16. 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成功!

七、代码提交评审

在提交代码之前,需要进入到代码库主目录下执行:

[plain]  view plain  copy
  1. gitdir=$(git rev-parse --git-dir); scp -p -P 29418 user1@10.1.5.116:hooks/commit-msg ${gitdir}/hooks/  
这样提交的时候日志中就会自动携带Change-ID,提交才能成功:

然后可以用git命令提交代码。提交完毕后需要push到Gerrit评审服务器,push命令为:

[plain]  view plain  copy
  1. git push origin HEAD:refs/for/master  

如果提交到名称为new-branch的分支则提交命令为:

[plain]  view plain  copy
  1. git push origin HEAD:refs/for/new-branch  

为简化命令,编辑new-repo/.git/config:

如图所示,在[remote "origin"]一行下面添加“push = HEAD:refs/for/master”,这样就可以用“git push”提交代码评审了:

八、评审代码

        new-repo库中有代码提交后,关注这个代码库的用户会收到一个邮件通知:

[plain]  view plain  copy
  1. cool has uploaded a new change for review.  
  2.   
  3.   http://10.1.5.116/gerrit/4  
  4.   
  5. Change subject: add  
  6. ......................................................................  
  7.   
  8. add  
  9.   
  10. Change-Id: I6cfb4a809b39685df0c62fad0396c0d3d8593057  
  11. ---  
  12. M zzz  
  13. 1 file changed, 1 insertion(+), 1 deletion(-)  
  14.   
  15.   
  16.   git pull ssh://10.1.5.116:29418/new-repo refs/changes/04/4/1  
  17. --   
  18. To view, visit http://10.1.5.116/gerrit/4  
  19. To unsubscribe, visit http://10.1.5.116/gerrit/settings  
  20.   
  21. Gerrit-MessageType: newchange  
  22. Gerrit-Change-Id: I6cfb4a809b39685df0c62fad0396c0d3d8593057  
  23. Gerrit-PatchSet: 1  
  24. Gerrit-Project: new-repo  
  25. Gerrit-Branch: master  
  26. Gerrit-Owner: cool <user1@test.com>  
  27. Gerrit-Reviewer: jason <jasonchin221t@163.com>  
在浏览器中输入:“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"同步代码:

代码同步完成。一次代码评审过程结束。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值