如何搭建开源code review gerrit服务器

简介:

搭建环境:Ubuntu 14.04

一、环境准备

1.Java环境

gerrit依赖,用于安装gerrit环境。

下载:jdk-7u79-linux-x64.tar.gz http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

安装:sudo tar zxvf ./jdk-7u79-linux-x64.tar.gz -C /opt

配置:vim ~/.bashrc(针对当前用户) or vim /etc/profile(针对所有用户,推荐)

export JAVA_HOME=/opt/jdk1.7.0_79
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

验证:java -version

java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

2.git环境

gerrit依赖,用来操作git repository。

安装:sudo apt-get install git

验证:git --version

git version 1.9.1

3.gerrit环境

下载:Gerrit 2.12.4 https://www.gerritcodereview.com/download/gerrit-2.12.4.war

4.apache2环境

安装:sudo apt-get install apache2 

验证:sudo /etc/init.d/apache2 start

5.gerrit管理帐号(可选,使用独立账号配置gerrit)

gerrit依赖,用来管理gerrit。

sudo adduser gerrit

sudo passwd gerrit

并将gerrit加入sudo权限

sudo visudo

gerrit  ALL=(ALL:ALL) ALL

二、安装与配置gerrit

1.配置gerrit

默认安装:java -jar gerrit-2.12.4.war init --batch -d ~/review_site

更新配置文件:sudo vim ~/review_site/etc/gerrit.config

复制代码
复制代码
[gerrit]
        basePath = git #默认gerrit对应的git库
        canonicalWebUrl = http://192.168.199.112:8081/ #gerrit web管理界面
[database]
        type = h2 #h2数据库 database = db/ReviewDB #数据库路径 [index] type = LUCENE [auth] type = HTTP #auth模式,默认为OPENID,配置为HTTP,需要apache配置反向代理 [receive] enableSignedPush = false [sendemail]
enable=false #关闭邮件提醒 [container] user = gerrit #linux user for gerrit javaHome = /opt/jdk1.7.0_79/jre #java home [sshd] listenAddress = *:29418 #default gerrit port [httpd] listenUrl = http://*:8081/ [cache] directory = cache [http] proxy = http://192.168.199.112:8080 #proxy server proxyUsername = gerrit1 #proxy user & password proxyPassword = 123456
复制代码
复制代码

2.配置apache2反向代理

  • 如果apache目录结构如下:
[username@hostname apache2]$ ls 
apache2.conf conf-enabled magic mods-enabled ports.conf sites-enabled conf-available envvars mods-available sites-available

开启SSL、Proxy、Rewrite等模块:

复制代码
复制代码
cd /etc/apache2/mods-enabled
ln -s ../mods-available/proxy.load
ln -s ../mods-available/proxy.conf
ln -s ../mods-available/proxy_http.load ln -s ../mods-available/proxy_balancer.conf ln -s ../mods-available/proxy_balancer.load ln -s ../mods-available/rewrite.load ln -s ../mods-available/ssl.conf ln -s ../mods-available/ssl.load ln -s ../mods-available/socache_shmcb.load # ln -s ../mods-available/slotmem_shm.load #
复制代码
复制代码

更新配置文件:sudo vim /etc/apache2/sites-enabled/gerrit-httpd.conf

复制代码
复制代码
ServerName 192.168.199.112 #your server ip
<VirtualHost *:8080>
    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On
    AllowEncodedSlashes On
    RewriteEngine On
    RewriteRule ^/(.*) http://192.168.199.112:8081/$1 [NE,P] #rewrite rule for proxy <Proxy *> Order deny,allow Allow from all </Proxy> <Location /login/> AuthType Basic AuthName "Gerrit Code Review" Require valid-user AuthBasicProvider file AuthUserFile /etc/apache2/passwords #password file for gerrit </Location> ProxyPass / http://192.168.199.112:8081/ </VirtualHost>
复制代码
复制代码
  • 如果apache目录结构如下:
[username@hostname apache2]$ ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  lib  logs  man  manual  modules

开启SSL、Proxy、Rewrite等模块:

复制代码
复制代码
[username@hostname apache2]$ vi conf/http.conf
# Open LoadModule
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule ssl_module modules/mod_ssl.so LoadModule rewrite_module modules/mod_rewrite.so # Gerrit config Include conf/extra/gerrit-httpd.conf 
复制代码
复制代码

其中apache2/conf/extra/gerrit-httpd.conf内容同上,apache2/sites-enabled/gerrit-httpd.conf。

3.配置gerrit账户密码

touch /etc/apache2/passwords

htpasswd -b /etc/apache2/passwords admin 123456(管理员)

htpasswd -b /etc/apache2/passwords gerrit1 123456(普通用户)

4.启动gerrit&启动apache2

sudo ~/review_site/bin/gerrit.sh start

sudo /etc/init.d/apache2 start

5.访问gerrit 管理界面 http://192.168.199.112:8080/

第一次访问,需要输入第3步设置的admin及密码,该账户将作为gerrit管理员账户。进入后可设置FullName: GerritAdmin。

 

 

三、如何使用gerrit

前提:需要git使用端 / gerrit服务端配合使用。

1.添加项目(gerrit 服务端)

1.1使用gerrit添加新项目:(适用于开启新项目并使用gerrit)

ssh -p 29418 gerrit1@192.168.199.112 gerrit create-project --empty-commit --name demo-project #建议采用管理界面添加

或者使用gerrit管理界面

1.2使用gerrit添加已有项目:(适用于已有项目下移植到gerrit中)

ssh -p 29418 gerrit1@192.168.199.112 gerrit create-project --name exist-project #建议采用管理界面添加

或者使用gerrit管理界面

然后将已有项目与gerrit上建立的exist-project关联,即将已有代码库代码push到gerrit中进行管理。

cd ~/gitcode/exist-project

git push ssh://gerrit1@192.168.199.112:29418/exist-project *:*

2.生成sshkey(git使用端)

在开发账户中生成sshkey,用作与gerrit服务器连接。

ssh-keygen -t rsa #生成sshkey

ls ~/.ssh/ #可查看sshkey

cat ~/.ssh/id_rsa.pub #查看sshkey

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCj1XDqjNXbn39oeacJOxe8FklBJRpGS1CcHRThWBytZ4A5KXAaxYzcD94GUd9UxxZzKCr6y90mwuJ+jkKxCTlqUiwj73QIiPWQ3Re08M049W4XxdfGnu/jyTI9DptWBsF0dwFJlQquUtitS+b1Tkz7Jr7+WipbZ22aiHwRvY4VcvCCdIHy/BnCCbVcfgk9u8f+X+ROm+DkOGfUcBNXWEJydqF0wy/D13Q5gp9OAXMIOD05T3GToJRwYtx2cVFmK4jE9HtcudOrrZNFVHqeblbA7EMKpIuDpLho7esmpwJ/woB1wnKTwHoUzbMt0a6hHPMNWyP2WIJebEA1KzThLixt gerrit@RylanYan-ThinkPad

3.添加sshkey到gerrit服务器(gerrit 服务端)

此步骤与git流程类似,即将id_rsa.pub内容上传到git repository,gerrit中帮我们管理git repository.

 

4.拉取代码&配置git hooks(git client端)

验证sshkey是否配置成功:ssh gerrit1@192.168.199.112 -p 29418

复制代码
复制代码
The authenticity of host '[192.168.199.112]:29418 ([127.0.0.1]:29418)' can't be established.
  RSA key fingerprint is db:07:3d:c2:94:25:b5:8d:ac:bc:b5:9e:2f:95:5f:4a. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[192.168.199.112]:29418' (RSA) to the list of known hosts. **** Welcome to Gerrit Code Review **** Hi user, you have successfully connected over SSH. Unfortunately, interactive shells are disabled. To clone a hosted Git repository, use: git clone ssh://gerrit1@192.168.199.112:29418/REPOSITORY_NAME.git
复制代码
复制代码

拉取代码: git clone ssh://gerrit1@192.168.199.112:29418/demo-project

更新githooks:gitdir=$(git rev-parse --git-dir); scp -p -P 29418 gerrit1@192.168.199.112:hooks/commit-msg ${gitdir}/hooks/

该过程用来在commit-msg中加入change-id,gerrit流程必备。

修改代码并提交,推送时与原有git流程不一致,采用 git push origin HEAD:refs/for/master 。

复制代码
复制代码
git push origin HEAD:refs/for/master
Counting objects: 6, done.
Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 381 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) remote: Processing changes: new: 1, refs: 1, done remote: remote: New Changes: remote: http://localhost:8081/4 Append date to testfile remote: To ssh://gerrit1@localhost:29418/demo-project * [new branch] HEAD -> refs/for/master
复制代码
复制代码

 

五.使用gerrit website完成code review

当完成push后,可在gerrit管理界面看到当前提交code review的change。

查看需要code review的提交:

查看某次提交的详细信息(审核者+2可通过本次提交,提交者可通过Abandon本次提交):

如果审核者+2通过后,可提交该次commit.

六.gerrit注意事项

* 需要为每个使用者分配gerrit账号,不要都使用admin账号,因为admin账号可直接push master

* pull代码后需要配置githooks文件,以便在commit时自动生成change-id,否则无法push

* push代码时需要使用git push origin HEAD:refs/for/master(branch),gerrit默认关闭非admin账号的push direct权限

* push代码时需要commit email与gerrit account email一致,否则无法push成功,可选择关闭email notify,并开启forge user权限,或者通过修改gerrit数据库account email信息



本文转自莫水千流博客园博客,原文链接:http://www.cnblogs.com/zhoug2020/p/6483276.html,如需转载请自行联系原作者

相关文章
|
5天前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
71 2
|
16天前
|
网络协议 Unix Linux
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
|
16天前
|
Web App开发 运维 安全
1Panel:一个现代化、开源的 Linux 服务器运维管理面板
1Panel:一个现代化、开源的 Linux 服务器运维管理面板
|
3月前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存】使用开源工具redis-copy时遇见6379端口无法连接到Redis服务器的问题
【Azure Redis 缓存】使用开源工具redis-copy时遇见6379端口无法连接到Redis服务器的问题
|
6月前
|
存储 弹性计算 固态存储
*PolarDB-PG开源版本 基于ECS+ESSD云盘共享存储的部署测评**
PolarDB-PG在阿里云ECS与ESSD云盘的组合下展现优秀性能,简化部署流程,提供高并发写入时低延迟稳定性。ESSD的高性能IOPS和读取速度优化了数据库表现,只读节点实现近乎实时数据访问。分布式部署保证高可用性,即使面对故障也能快速切换。尽管ESSD初期成本较高,但长期看能降低总体拥有成本,尤其适合高并发、大数据量场景。此解决方案平衡了性能、可用性和成本,是企业级应用的理想选择。
|
5月前
|
缓存 负载均衡 应用服务中间件
Nginx 是一个高性能的开源反向代理服务器和 Web 服务器
Nginx 是一个高性能的开源反向代理服务器和 Web 服务器
70 0
|
6月前
|
测试技术 PyTorch 算法框架/工具
魔搭开源推理引擎 DashInfer,助力CPU服务器解锁大模型超强推理
ModelScope推出了预训练大语言模型(LLM)推理引擎DashInfer,采用C++ Runtime编写,提供C++和Python语言接口,具有生产级别的高性能表现,适用于多种CPU架构,包括x86和ARMv9。DashInfer支持连续批处理(Continuous Batching)和多NUMA推理(NUMA-Aware),能够充分利用服务器级CPU的算力,为推理14B及以下的LLM模型提供更多的硬件选择。该项工作已开源。
|
6月前
|
安全 算法 Linux
【专栏】Linux 服务器还有漏洞?OpenVAS 是一款开源的漏洞扫描工具,用于全面评估 Linux 服务器安全
【4月更文挑战第28天】OpenVAS 是一款开源的漏洞扫描工具,用于全面评估 Linux 服务器安全。它具有全面性、准确性和实时性的特点,能扫描各种设备并及时发现安全漏洞。使用 OpenVAS 包括安装、配置和执行扫描,以及分析结果并采取修复措施。在使用过程中应注意扫描时间、范围和策略的选择。通过定期检查和修复漏洞,结合其他安全措施,可以提升服务器安全性。OpenVAS 是保障 Linux 服务器安全的重要工具,但安全维护也需要持续学习和适应新挑战。
174 1
|
6月前
|
Go 开发工具 git
推荐一个开源流媒体服务器-livgo
推荐一个开源流媒体服务器-livgo
203 0
|
6月前
|
编解码 缓存 网络协议
EasyDarwin开源流媒体服务器
EasyDarwin开源流媒体服务器
225 0