首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用gerrit作为代码评审工具

使用gerrit作为代码评审工具

作者头像
宅蓝三木
发布于 2018-02-07 06:54:44
发布于 2018-02-07 06:54:44
2.5K00
代码可运行
举报
文章被收录于专栏:三木的博客三木的博客
运行总次数:0
代码可运行

需求描述

其实作为项目代码的maintainer,一直习惯于mailing list + git的代码评审及管理,无奈公司主推敏捷+devops,老板让改用gerrit。硬着头皮切换到gerrit,在这里记录下安装配置的过程及踩过的许多坑,以便网友们以后配置gerrit留作参考。

需求其实很简单,我们项目一直使用公司内部一个类似于github的代码托管网站来托管项目代码,使用邮件列表来评审代码。代码通过评审通过后,我再将patch push到代码托管服务器上去。整个开发流程如下图所示:

现在需要切换到gerrit来作为代码评审工具,以便于能够和jenkins集成,搭建一个集开发、构建、测试、部署为一体的devops系统,结构如下图所示。本文只关注gerrit的搭建。

Gerrit简介

安装步骤

1 . 安装Java.

网上有很多安装java的博客和文章,因此在这里不再赘述,可以参考下面这篇文章:

Linux下安装java

2 . 给Gerrit单独创建一个账户

代码语言:javascript
代码运行次数:0
运行
复制
#useradd gerrit
#passwd gerrit
#su gerrit

3 . 下载gerrit

gerrit是在google上托管的项目,访问外国网站下载比较麻烦,可以在这里下载2.11版本的gerrit:

百度网盘下载Gerrit

将网盘中的两个文件gerrit-2.11.war以及bcpkix-jdk15on-151.jar下载到gerrit用户的家目录/home/gerrit下。

4 . 按下面的步骤安装gerrit,其中的问题大部分可以敲回车选择默认设置。

代码语言:javascript
代码运行次数:0
运行
复制
[gerrit@linux ~]$ java -jar ./gerrit-2.11.war init -d gerrit 
    
//-d指定gerrit的安装目录

Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore

*** Gerrit Code Review 2.11
*** 

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

*** Git Repositories
*** 

Location of Git repositories   [git]:  

*** SQL Database
*** 

Database server type           [h2]: 

*** Index
*** 

Type                           [LUCENE/?]: 

*** User Authentication
*** 

Authentication method          [OPENID/?]: http    //为了不依赖于openid我们这里要设置成http
Get username from custom HTTP header [y/N]? y
Username HTTP header           [SM_USER]: 
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.8.0-openjdk-1.8.0.45-38.b14.fc21.x86_64/jre]: 
Copy gerrit-2.11.war to /home/gerrit/gerrit/bin/gerrit.war [Y/n]? 
Copying gerrit-2.11.war to /home/gerrit/gerrit/bin/gerrit.war

*** SSH Daemon
*** 

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

Gerrit Code Review is not shipped with Bouncy Castle Crypto SSL v151
  If available, Gerrit can take advantage of features
  in the library, but will also function without it.
Download and install it now [Y/n]? n  //选择n,因为这个文件已经下载好了,安装完手动拷贝进去就行
Generating SSH host key ... rsa(simple)... done

*** HTTP Daemon
*** 

Behind reverse proxy           [y/N]? y  //需要配置反向代理来满足http认证
Proxy uses SSL (https://)      [y/N]? N
Subdirectory on proxy server   [/]: 
Listen on address              [*]: 
Listen on port                 [8081]: 
Canonical URL                  [http://null/]: 

*** Plugins
*** 

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]? 
Initializing plugins.
No plugins found with init steps.

Initialized /home/gerrit/gerrit
Executing /home/gerrit/gerrit/bin/gerrit.sh start
Starting Gerrit Code Review: OK

安装完成后需要将下载好的bcpkix-jdk15on-151.jar文件拷贝到安装目录中去:

代码语言:javascript
代码运行次数:0
运行
复制
cp bcpkix-jdk15on-151.jar /home/gerrit/gerrit/lib/bcpkix-jdk15on-151.jar

5 . 配置Apache反向代理

修改httpd的配置文件,在其末尾加入:

代码语言:javascript
代码运行次数:0
运行
复制
<VirtualHost *>
  ServerName gerrit.example.com

  ProxyRequests Off
  ProxyVia Off
  ProxyPreserveHost On

  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>
  <Location /login/>
    AuthType Basic
    AuthName "Gerrit Code Review"
    AuthBasicProvider file
    AuthUserFile /home/gerrit/gerrit/etc/passwords
    Require valid-user
  </Location>
  ProxyPass / http://9.181.129.109:8081/
</VirtualHost>

需要将IP地址替换成你自己的IP.修改/etc/hosts,加入gerrit.example.com的解析:

代码语言:javascript
代码运行次数:0
运行
复制
9.181.129.109	gerrit.example.com

这里也需要替换IP地址。

6 . 创建管理员账户,Gerrit把第一个被创建的用户当做是管理员账户:

代码语言:javascript
代码运行次数:0
运行
复制
$htpassword /home/gerrit/gerrit/etc/passwords $username

$username替换成你要设置的用户名。

7 . 重启服务

代码语言:javascript
代码运行次数:0
运行
复制
$./gerrit/bin/gerrit.sh restart
$sudo service httpd restart

问题总结

1 . Could not open password file.

症状:web浏览器提示服务器端错误,查看httpd日志文件/var/log/httpd/error_log,发现如下错误信息:

代码语言:javascript
代码运行次数:0
运行
复制
Permission denied:......Could not open password file: /home/gerrit/gerrit/etc/passwords

原因:该问题是由于passwords文件的路径上权限设置阻挡了httpd的访问。 解决方法:将/home/gerrit目录及passwords文件的权限设置为755

代码语言:javascript
代码运行次数:0
运行
复制
$chmod 755 /home/gerrit
$chmod 755 /home/gerrit/gerrit/etc/passwords

2 . Proxy Error

症状:输入用户名和密码登陆后,web浏览器提示代理错误。

代码语言:javascript
代码运行次数:0
运行
复制
Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /login/.

Reason: DNS lookup failure for: 9.181.129.109:8081login

原因:最后发现是httpd的配置文件中在ProxyPass一行的IP地址后少写了一个/

代码语言:javascript
代码运行次数:0
运行
复制
ProxyPass / http://9.181.129.109:8081
--->
ProxyPass / http://9.181.129.109:8081/

参考文献

1 . Gerrit官方文档 2 . Gerrit简易安装入门

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Ubuntu下安装部署Gerrit
1.之前 git add-->git commit-->git push如图中橙色的线
项勇
2019/12/13
3.5K0
Ubuntu下安装部署Gerrit
记录Gerrit2.8.4环境迁移、安装、配置以及问题解决
哎_小羊
2018/01/02
3.1K0
gerrit3.0安装
gerrit3.0安装
Java架构师必看
2021/05/14
8630
gerrit3.0安装
从零搭建 Gerrit 实现 code review
对于经常协作写代码的我们来说,代码审核是我们经常忽略的事情,但是确是非常非常重要的事情,良好的 code review 会为未来项目的维护起到非常大的帮助,今天我们就来搭建一套完整的 code review 环境。
周萝卜
2020/05/22
3.5K0
Gerrit的用法及与gitlab的区别
来到一个新的团队,开发的代码被同事覆盖了。找同事核实,同事却说根本没有看到我的代码。经过一番沟通了解,原来他们的代码没有直接在gitlab上操作,而是先提交到gerrit,然后在提交到git。但是代码拉取的时候,不会直接从gitlab上拉取。所以,我提交到gitlab上的代码,同事们都没有拉取到。
用户7798898
2022/05/09
2.9K0
Gerrit的用法及与gitlab的区别
最新Apache+SVN+ReviewBoard实现在线代码评审
注,编译安装的mysql,90%运维会装在/usr/local/mysql 下 如果默认安装在/usr/local/mysql下,等装好ReviewBoard生成站点的时候会选择支持使用的数据库的时候没有识别mysql只有sqlite3,此时,如果你数据库不是sqlite3,继续往下执行自动生成的站点访问将会出现bad reqest 400错误。对于编译安装的mysql,解决办法如下 yum安装的mysql命令将在/usr/local/bin/下,不需要软连。
星哥玩云
2022/07/03
1.1K0
最新Apache+SVN+ReviewBoard实现在线代码评审
[原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
近年来,由于开源项目、社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发、敏捷开发、迭代开发、持续集成和单元测试这些拉风的术语。然而,大都是仅仅听到在说而已,国内也很少有公司能有完整的 CI 体系流程。反之一些开源项目都有完整的 CI体系,比如openstack。 为了实现代码托管->代码审核->代码发布的一套自动化流程,我特意在IDC服务器上部署了Gitlab+Gerrit+Jenkins对接环境,以下记录了操作过程: ------------------------
洗尽了浮华
2018/01/22
4.6K0
[原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
Gerrit 代码评审安装-快速使用手册
文章摘自googlesource,因实际安装环境不同文章内容也会对应做修改。本文基于Unix的操作系统解释说明,不推荐直接参照本文就部署在生产环境。
幺鹿
2018/08/21
1.2K0
GitLab的代码评审工具你用对了吗?
从代码提交的时机来看,一般会有两种模式,即开源MR/PR模式和commit模式。而这这种划分默认是在代码提交的环节进行代码评审。因此从代码提交与代码评审的关系来看,也可以有所谓的代码提交时触发的代码评审和与代码提交无关的代码评审。而从代码评审的地点来看,一般也会有两种模式,即WEB模式和IDE模式。
Antony
2021/10/26
9.8K0
大数据环境搭建-Ambari图形化环境配置工具
https://www.psvmc.cn/article/2022-03-31-bigdata-environment.html
码客说
2022/04/27
8880
『互联网架构』软件架构-电商系统架构(中)(70)
PS:基本的流程已经构建完成了。jenkins已经跟私服连接上了。下一步就从tomcat关联上jenkins构建后的war包或者jar包。
IT架构圈
2019/06/11
6770
『互联网架构』软件架构-电商系统架构(中)(70)
nexus 搭建maven 私服
https://www.sonatype.com/download-oss-sonatype
用户5899361
2020/12/07
1.8K0
nexus 搭建maven 私服
利用nexus搭建maven私服与本地jar安装到私服
解压缩.png 在../nexus-3.13.0-01\bin目录下执行nexus.exe /run 可以修改../etc目录下nexus-default.properties文件,改变端口
用户5166330
2019/04/16
2.4K0
利用nexus搭建maven私服与本地jar安装到私服
Maven私库安装与配置
项目开发时,一般采用Maven来进行项目构建,管理,jar包下载,项目组开发人员开发时,只要在项目的pom.xml文件中,添加如下pom.xml信息从公共的库中下载相关的Jar包以及依赖Jar包,但有时候公共的库不是那么稳定而且下载速度往往很慢,一个团队一起开发项目时,如果每个组员都去下载一遍所有依赖的Jar包,其实是一件很麻烦的事情,所以这时候就有必要搭建一个Maven的私库了,这样如果再添加其他的构件时,会先在Maven私库下载好,以后才会下载到本地。以后,如果发现私服已经存在某一jar包,则会直接从私服下载,如果没有再去网络上下载,能大大的提高效率,因此很有必要搭建maven私服。
全栈程序员站长
2022/09/09
1.3K0
测试环境搭建——Spring Boot 部署
相比传统的 Java Web ,Spring Boot 极大简化了配置,并且遵守约定优于配置的原则即使0配置也能正常运行,是目前最流行的 Java Web 开发框架。
TestOps
2022/04/07
6950
测试环境搭建——Spring Boot 部署
腾讯云搭建git+gerrit代码评审服务器
这里我安装的是JDK8,安装完成之后输入java -version,出现一下结果说明安装成功了。
哆哆jarvis
2022/08/23
2.6K0
腾讯云搭建git+gerrit代码评审服务器
ReviewBoard代码评审实践总结 顶
代码评审(CodeReview),顾名思义是对代码进行评审,是软件工程的活动之一。
donghui
2019/04/19
2.6K0
CodeReview实践-Gerrit自动触发JenkinsCI
当前团队使用Gerrit来做代码管理、CodeReview。计划实现当review提交到了Gerrit并且review通过(merged)自动触发Jenkins流水线。以前接触Gitlab比较多,Gerrit还是第一次开始用,踩了点坑记录下来。本文主要讲述Gerrit Trigger流水线配置,关于服务器配置等细节问题暂不研究,降低复杂性。
DevOps云学堂
2020/08/11
3.7K0
CodeReview实践-Gerrit自动触发JenkinsCI
Jenkins之Nexus搭建Maven私有仓库
私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。
聚优云惠
2020/11/17
1.7K0
开发项目管理工具redmine 原
基于上面的多种特性,在项目管理工作中,如任务分配、任务跟踪、项目权限管理等等带来很大的便捷性,使得工作进度、质量更加可控。春雨在使用Redmine时集成了ldap,并以此对外部员工(toh、合作方)和内部员工做了区分,同时Redmine对用户分配了四种角色(超级管理员、管理人员、开发人员、报告人员),而且还可以配置用户组,如此一来对于项目权限管理更加便捷。更重要的一点是日常工作中所有工作内容的申请和交接都通过Redmine和email来操作,这样所有工作的开展都有据可依,也符合等保3的考核要求。
阿dai学长
2019/04/03
11K3
开发项目管理工具redmine
                                                                            原
相关推荐
Ubuntu下安装部署Gerrit
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档