当前位置: 首页 > 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语句中的第一个…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...