当前位置: 首页 > news >正文

gerrit 从安装到出坑

一般公司在做代码审核的时候选择codereview gerrit来处理代码的入库的问题。

它是通过提交的时候产生Change-Id: If4e0107f3bd7c5df9e2dc72ee4beb187b07151b9

来决定是不是入库,一般如果不是通过这个管理,那么就是我们通常的操作

git add .

git commit -m "XXXX"

git push origin master

这种没有代码检视直接入库的行为。

这种的好处的是方便快捷,不好的是,入库很随意,代码质量无法保证。

对于很多的团队也是想搭建自己的gerrit,那么我下面就介绍一下搭建的过程。

参考:(187条消息) 搭建Gerrit环境Ubuntu_ubuntu搭建gerrit_西瓜投手爱吃西瓜的博客-CSDN博客

1.安装apache

    sudo apt-get install apache2
注意:To run Gerrit behind an Apache server using 'mod_proxy', enable the necessary 
Apache2 modules:
执行:sudo a2enmod proxy_http
执行:sudo a2enmod ssl 
使新的配置生效,需要执行如下命令:
  service apache2 restart
2.安装PostgreSQL数据库

sudo apt-get install postgresql

注意:安装完postgresql后,会自动创建一个用户名和密码均为postgres的账户

3.增加Gerrit需要的数据库

执行:sudo -u postgres createuser -RDIElPS zmj  //zmj 是账户名字,你自己可以修改

执行:sudo -u postgres createdb -E UTF-8 -O zmj reviewdb

4.安装Gerrit

在Gerrit官网上下载Gerrit安装包 https://www.gerritcodereview.com/ 点击Download 下载gerrit-3.7.0.war

创建目录 mkdir gerrit

进入目录 cd gerrit

我这边此时下载的是最新的版本:gerrit-3.8.1.war

如果此时得不到的话:可以使用如下链接下载:

链接: https://pan.baidu.com/s/1ti-M13V5GCi-yubktPPYfA?pwd=mpc8 提取码: mpc8 复制这段内容后打开百度网盘手机App,操作更方便哦

我的服务器是有:java的环境所以没有那么多事情,直接执行这个命令正常配置。

如果zmj@ubuntu:~/gerrit$ java -jar gerrit-3.7.0.war init -d review_site   提示
Command 'java' not found, but can be installed with:

sudo apt install default-jre            
sudo apt install openjdk-11-jre-headless
sudo apt install openjdk-8-jre-headless 
下载sudo apt install openjdk-11-jre-headless  后再次执行命令

指定git存储仓库 gerr 把gerr文件名改为git // 我这边比较懒是没有做这个动作的

[root@localhost gerrit]# java -jar gerrit-3.1.3.war init -d review_site

根据提示一步步安装gerrit


*** Gerrit Code Review 3.1.3

***

Create '/usr/local/src/gerrit/review_site' [Y/n]? y  //这个会自动在你的gerrit目录下生成相应的目录

#程序会自动创建该文件,必须输入”Y“,如果输入"N"则程序会退出,默认就是"Y",因此我们直接回车应该也可以的
 

*** Git Repositories

***

Location of Git repositories   [git]:/home/zmj/gerr   //这个是你的仓,地址要写入

#指定Git存储库,最好指定一个不存在的目录,他会自动创建。

*** Index***

Type                           [lucene/?]:        //默认回车就行了

#默认即可。

 
*** User Authentication***

Authentication method          [openid/?]: HTTP  //这个地方是http 

#认证方法输入HTTP,我们要使用反向代理

Get username from custom HTTP header [y/N]? n   //这里按照这个设置

#询问咱们是否从自定义HTTP头获取用户名,我们输入”n“

SSO logout URL                 :               //回车

Enable signed push support     [y/N]? y  //按照这里

#启用签名的推送支持

*** Review Labels***

Install Verified label         [y/N]?      //回车

#安装已验证标签,默认即可。

SMTP server hostname           [localhost]: smtp.exmail.qq.com  //我比较喜欢163的设置,smtp.163.com

#输入自动发送邮件的smtp服务器,这里我们用的是腾讯企业邮箱

SMTP server port               [(default)]: 465 // 163就是25

#465/994时SSL协议端口后,25是非SSL协议端口号

SMTP encryption                [none/?]: SSL   //none  

#如果上一步输入的是465/994,此处输入SSL,否则直接回车即可

SMTP username                  [root]: jsyfzxqa@corp.to8to.com   //这里是你的邮箱,比如我的m135XXXX@163.com

#此处是你定义自动发送邮件的邮箱地址

jsyfzxqa@corp.to8to.com's password :

#接着我们需要输入2次咱们邮箱的授权码。  //这里比较重要,不是邮箱密码,而是授权码,这个地方我是搞错了的。            

confirm password :

Run as                         [root]: #指定容器运行的进程用户,默认为root用户,我们默认即可

Java runtime                   [/yinzhengjie/softwares/jdk1.8.0_201/jre]:             //这里有值我是直接回车

#JAVA的运行环境。如果它识别的有误,你可以指定你服务器的环境

Copy gerrit-3.1.3.war to review_site/bin/gerrit.war [Y/n]? y   

#拷贝gerri安装包

Copy gerrit-3.1.3.war to review_site/bin/gerrit.war

*** SSH Daemon***
 

Listen on address              [*]: n   

#指定SSH后台服务的监听地址

Listen on port                 [29418]:

#指定SSH后台服务的端口号

Generating SSH host key ... rsa... ed25519... ecdsa 256... ecdsa 384... ecdsa 521... done
 

*** HTTP Daemon***

Behind reverse proxy           [y/N]? y

#使用发向代理

Proxy uses SSL (https://)      [y/N]? n

#不适用SSL

Subdirectory on proxy server   [/]:

#指定代理服务器的子目录,默认为"/"路径,默认即可

Listen on address              [*]:

#只当gerrit服务的监听地址

Listen on port                 [8081]: 8888

#指定gerrit的服务端口

Canonical URL                  [[http://localhost/]:

#指定标准连接,咱们默认即可

按照上面的描述选择对应即可。

5.邮箱配置

进入到对应的目录下 /home/zmj/gerrit/review_site/etc

修改gerrit.config文件 在sendemail部分添加from配置

 [sendemail]     发送邮件
            smtpServer = smtp.mxhichina.com
            smtpServerPort = 25       端口号
            smtpUser = 邮箱地址        
            from=CodeReview<邮箱地址>    代码审查 邮箱地址
            
 [gerrit]
basePath = git
canonicalWebUrl = http://192.168.168.128/                  //nginx的代理端口 

.........

[httpd]
listenUrl = http://*:8080/

6.重启Gerrit

cd gerrit/review_site/

./bin/gerrit.sh restart

7.Apache反向代理配置

编辑/etc/apache2/sites-enabled/000-default.conf

vim 000-default.conf 修改文件,修改文件后现在文件是链接文件,无法保存。

命令行sudo vim 000-default.conf 并输入密码即可

注意:The ProxyPass 8080 must be same with the ./review_site/etc/gerrit.config.
When access the http://192.168.168.128:80,Apache2 will lead you to 
http://192.168.168.128:8080.
ProxyPass 8080必须和./review_site/etc/gerrit.config里的端口配置一致。当登录http://192.168.168.128:80的时候,Apache2会帮助打开http://192.168.168.128:8080。

<VirtualHost 192.168.1.179:80>

        ProxyRequests Off
        ProxyVia Off
        ProxyPreserveHost On
<Proxy *> 
    Order deny,allow
    Allow from all  
</Proxy>
<Location /login/>
    AuthType Basic
    AuthName "Welcome to Gerrit Code Review Site!"
    Require valid-user
    AuthUserFile /home/zmj/gerrit/review_site/etc/passwords
</Location>
AllowEncodedSlashes On
ProxyPass / http://127.0.0.1:8080/
</VirtualHost>
 

8.重启Apache服务

service apache2 restart

9.添加Gerrit账户

touch /home/zmj/gerrit/review_site/etc/passwords     创建密码文件
要在Gerrit的配置文件下创建用户
cd /home/zmj/gerrit/review_site/etc
htpasswd -m passwords zmj     创建zmj用户 密码为1
这个命令有一点说明:这里创建的名字是啥passwords,下面的htpasswd -m passwords 一定要对应,不然会说找不到文件的。 这里的密码都是加密后的铭文显示

10.访问http://192.168.168.128:80

到此gerrit 安装就完成了。但是在实际的操作中有一堆的坑。

比如我们一顿骚操作常常遇到:

那么下面就是围绕这个坑来介绍的:

那么搭建gerrit服务器(apache&nginx反向代理方式)_51CTO博客_nginx反向代理服务器配置

 主要是参考这里配置值

它的逻辑是先配置gerrit 下的gerrit_config

然后配置端口对外访问

1:进入etc路径,即/home/gerrit/review-gerrit/etc,这里贴出gerrit.config文件

2:

例如我们想通过PC浏览器去访问http://192.168.1.6:9999,就是一个反向代理。在/home/gerrit/review-gerrit/etc/gerrit.config中,我们配置gerrit端口bind在10000,为啥外部通过访问端口9999,就可以打开gerrit的web页面?

        原因就是Apache的反向代理功能。那就开始配置Apache吧!

        a.第一步,要在Apache上新增端口9999,用户监听网络事件。修改配置文件/etc/apache2/ports.conf。

这个文件是只读,需要自己去改写sudo chmod 666 ports.conf

b.第二步,增加反向代理的配置。/etc/apache2/sites-enabled/000-default

c.完成以上配置,则成功。然后restart Apache和gerrit服务即可

这里的密码就是上面sshd 创建的名字和密码

你以为照抄就可以搞定了,然而到这里还TM有坑,自古坑多。

然后我又参考这个:https://blog.csdn.net/enlangs/article/details/21221827 

通过摸索修改完成了。

下一篇介绍:gerrit 的启动坑,坑坑走不完的坑

(188条消息) gerrit 的启动坑,坑坑走不完的坑_阿木看源码的博客-CSDN博客

相关文章:

gerrit 从安装到出坑

一般公司在做代码审核的时候选择codereview gerrit来处理代码的入库的问题。 它是通过提交的时候产生Change-Id: If4e0107f3bd7c5df9e2dc72ee4beb187b07151b9 来决定是不是入库&#xff0c;一般如果不是通过这个管理&#xff0c;那么就是我们通常的操作 git add . git comm…...

Java工程师就业前景怎么样?能拿多少工资?

Java软件工程师是指运用Java这个开发工具去完成软件产品的软件程序设计、开发、测试、维护升级等工作的人员。Java程序员可以分为初级、中级、高级、资深等。不同级别的Java程序员&#xff0c;薪资也不一样。 Java除了一般的编程&#xff0c;还可以开发游戏、进行桌面设计、Ja…...

极速跳板机登陆服务器

目录 一&#xff1a;简单登陆跳板器二&#xff1a;一键申请相关的服务器权限三&#xff1a;简化登陆 一&#xff1a;简单登陆跳板器 登陆公司提供的网址&#xff0c; 下载自己的专属RSA密钥。在密钥文件处&#xff0c; 执行登陆指令&#xff1a; ssh -p 36000 -i id_rsa 用户跳…...

【算法与数据结构】226、LeetCode翻转二叉树

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;这道题的思路很简单&#xff0c;本质上就是遍历每一个节点&#xff0c;然后交换左右节点。我们可以用前…...

metaRTC6.0 new feature (一)

概要 metaRTC6.0社区版最新版是6.0.212&#xff0c;标准版最新版本是6.0.276&#xff0c;企业版基础版最新版本是6.0.362&#xff0c;在企业版和标准版新增了一些实用功能模块&#xff0c;文件数字证书模块将并入社区版。 New Feature rtsp协议支持 新增rtsp协议&#xff0…...

聊天机器人如何增加电子商务销售额

聊天机器人和自动化对企业和客户来说都是福音。自动对话和聊天机器人&#xff08;以下统称为“自动化”&#xff09;通过自动回答问题或分配会话信息来帮助用户浏览品牌网站或电商商店。即时答案对客户来说非常有用&#xff0c;使用自动化也可以让原本与客户聊天的客服员工专注…...

stm32 IIC通信

文章目录 IIC 通信一、硬件电路二、IIC时序基本单元三、IIC时序1.指定地址写2.当前地址读3.指定地址读 IIC 通信 IIC总线是一种通用数据总线&#xff0c;有两根通信线&#xff08;SCL(串行时钟总线),SDA&#xff08;串行数据总线&#xff09;&#xff09;。 特点&#xff1a;同…...

Elasticsearch监控工具Cerebro安装

Elasticsearch监控工具Cerebro安装 1、在windwos下的安装 1.1 下载安装包 https://github.com/lmenezes/cerebro/releases/download/v0.9.4/cerebro-0.9.4.zip 1.2 解压 1.3 修改配置文件 如果需要修改相关信息&#xff0c;编辑C:\zsxsoftware\cerebro-0.9.4\conf\applica…...

RTOS 低功耗设计原理及实现

RTOS 低功耗设计原理及实现 文章目录 RTOS 低功耗设计原理及实现&#x1f468;‍&#x1f3eb;前言&#x1f468;‍&#x1f52c;Tickless Idle Mode 的原理及实现&#x1f468;‍&#x1f680;Tickless Idle Mode 的软件设计原理&#x1f468;‍&#x1f4bb;Tickless Idle Mo…...

PaddleOCR C++编译出错解决方案

文章目录 前言一、环境准备1、主要环境2、源码下载3、C推理库下载 二、报错信息1.静态库调用错误2.ld returned 1 exit status 总结 前言 最近&#xff0c;想尝试下PaddleOCR的C推理&#xff0c;但是过程不如人所愿&#xff0c;除了很多问题&#xff0c;这里捡重点的说下吧&…...

89、简述RabbitMQ的架构设计

简述RabbitMQ的架构设计 BrokerQueueExchangeRoutingKeyBinding信道架构设计图Broker RabbitMQ的服务节点 Queue 队列,是RabbitMQ的内部对象,用于存储消息。RabbitMQ中消息只能存储在队列中。生产者投递消息到队列,消费者从队列中获取消息并消费。多个消费者可以订阅同一…...

63 | 图像处理

文章目录 Python图像处理什么是图像处理?Python图像处理库安装Pillow库加载和显示图像调整图像大小裁剪图像调整图像亮度、对比度和色彩平衡应用滤镜练习题Python图像处理 什么是图像处理? 图像处理是指使用计算机算法来改变图像的外观或特征。它可以用于许多不同的应用程序…...

Stable Diffusion - 扩展 Roop 换脸 (Face Swapping) 插件的配置与使用

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/131856141 官网&#xff1a;GitHub - roop&#xff0c;参考论文&#xff1a;RobustSwap: A Simple yet Robust Face Swapping Model against Attr…...

opencv实现替换证件照颜色

程序可以实现蓝色底片变为红色底片&#xff08;但有点小bug&#xff09; 修改自&#xff1a;opencv&#xff1a;HSV颜色模型_opencv hsv_君浪的博客-CSDN博客 相关文章&#xff1a;OpenCV Mat数据类型指针ptr的使用_cv::mat ptr_AoboSir的博客-CSDN博客 【OpenCV】HSV颜色识…...

Elasticsearch【全文检索、倒排索引、应用场景、对比Solr、数据结构】(一)-全面详解(学习总结---从入门到深化)

目录 Elasticsearch介绍_全文检索 Elasticsearch介绍_倒排索引 Elasticsearch介绍_Elasticsearch的出现 Elasticsearch介绍_Elasticsearch应用场景 Elasticsearch介绍_Elasticsearch对比Solr Elasticsearch介绍_Elasticsearch数据结构 Elasticsearch介绍_全文检索 Elasti…...

了解 3DS MAX 3D摄像机跟踪设置:第 2 部分

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 项目设置 步骤 1 打开“后效”。 打开后效果 步骤 2 转到合成>新合成以创建新合成。 将“宽度”和“高度”值分别设置为 1280 和 720。将帧速率设置为 25&#xff0c;将持续时间设置为 12 秒。单…...

MySQL 判断 JSON 数组是否相等

文章目录 1.问题2.使用 JSON_CONTAINS 与 JSON_LENGTH参考文献 1.问题 JSON&#xff08;JavaScript Object Notation&#xff09;是流行的互联网应用服务之间的数据交换格式。 MySQL 从 5.7 版本开始支持 RFC 7159 定义的 JSON 规范&#xff0c;主要有 JSON 对象 和 JSON 数组…...

uni-app个人中心

一. 介绍uni-app&#xff1a; uni-app 是基于Vue.js框架开发的一个跨平台移动应用开发框架&#xff0c;可以同时支持多个平台&#xff08;如iOS、Android、Web等&#xff09;的应用开发。采用了统一的语法和组件规范&#xff0c;可以大大简化跨平台开发的工作&#xff0c;提高…...

只需3步,使用Stable Diffusion无限生产AI数字人视频

效果演示 先看效果&#xff0c;感兴趣的可以继续读下去。 没有找到可以上传视频的地方&#xff0c;大家打开这个网盘链接观看&#xff1a;https://www.aliyundrive.com/s/CRBm5NL3xAE 基本方法 搞一张照片&#xff0c;搞一段语音&#xff0c;合成照片和语音&#xff0c;同…...

Mysql执行计划字段解释

文章目录 一、前言二、如何查看执行计划三、执行计划各字段解释四、select_type4.1、SIMPLE&#xff08;简单查询&#xff09;4.1.1、简单的单表查询4.1.2、多表连接查询 4.2、PRIMARY&#xff08;主查询&#xff09;4.2.1、包含复杂子查询的外层查询4.2.2、UNION语句中的第一个…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...