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 来决定是不是入库,一般如果不是通过这个管理,那么就是我们通常的操作 git add . git comm…...

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

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

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

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

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

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

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 修改配置文件 如果需要修改相关信息,编辑C:\zsxsoftware\cerebro-0.9.4\conf\applica…...

RTOS 低功耗设计原理及实现
RTOS 低功耗设计原理及实现 文章目录 RTOS 低功耗设计原理及实现👨🏫前言👨🔬Tickless Idle Mode 的原理及实现👨🚀Tickless Idle Mode 的软件设计原理👨💻Tickless Idle Mo…...

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

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

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

Stable Diffusion - 扩展 Roop 换脸 (Face Swapping) 插件的配置与使用
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/131856141 官网:GitHub - roop,参考论文:RobustSwap: A Simple yet Robust Face Swapping Model against Attr…...

opencv实现替换证件照颜色
程序可以实现蓝色底片变为红色底片(但有点小bug) 修改自:opencv:HSV颜色模型_opencv hsv_君浪的博客-CSDN博客 相关文章: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 部分
推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 项目设置 步骤 1 打开“后效”。 打开后效果 步骤 2 转到合成>新合成以创建新合成。 将“宽度”和“高度”值分别设置为 1280 和 720。将帧速率设置为 25,将持续时间设置为 12 秒。单…...

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

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

只需3步,使用Stable Diffusion无限生产AI数字人视频
效果演示 先看效果,感兴趣的可以继续读下去。 没有找到可以上传视频的地方,大家打开这个网盘链接观看:https://www.aliyundrive.com/s/CRBm5NL3xAE 基本方法 搞一张照片,搞一段语音,合成照片和语音,同…...

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

Linux -- 线程
文章目录 1. 线程概念1.1 概念1.2 理解(Linux OS角度)1.3 见一见 2. 线程优缺点3. 线程使用3.1 认识线程库3.2 使用3.2.1 线程创建3.2.2 线程等待3.2.3 线程退出3.2.4 线程取消3.2.5 获取线程id3.2.6 线程分离 3.3 理解线程库3.4 证明线程栈3.5 线程局部…...

Android:实时更新时间
心想着也就是更新精确到分钟,不用精确到秒,定时器就没有必要,系统是有广播Intent.ACTION_TIME_TICK可以直接用 动态注册广播 主方法里面调用一下 //要先设置一下当前时间,不然刷新时间会等到1分钟后再刷新 tv_HM.setText(getHM…...

24 鼠标常用事件
鼠标进入:enterEvent鼠标离开:leaveEvent鼠标按下:mousePressEvent鼠标释放:mouseRelaseEvent鼠标移动:mouseMoveEvent 提升为自定义控件MyLabel 代码: //mylabel.h #ifndef MYLABEL_H #define MYLABEL_H#…...

了解 3DS MAX 3D摄像机跟踪设置:第 4 部分
推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 项目设置 步骤 1 打开“后效”。 打开后效果 步骤 2 转到合成>新合成以创建新合成。 将“宽度”和“高度”值分别设置为 1280 和 720。将帧速率设置为 25,将持续时间设置为 12 秒。单…...

nginx吞吐量调优
调整worker_processes和worker_connections: worker_processes:设置为服务器的CPU核心数或更高。例如,如果服务器有8个CPU核心,可以将worker_processes设置为8。worker_connections:设置每个worker进程所能处理的最大连…...

Python操作Excel文件,修改Excel样式(openpyxl)
秋风阁-北溪入江流 文章目录 安装依赖库openpyxlopenpyxl的操作加载文件,获取sheet加载文件load_workbook获取sheet 遍历单元格迭代遍历索引遍历 单元格行高和列宽的修改Excel列号与字母的转换Excel行高修改Excel列宽修改 Excel表格文字对齐属性设置修改单元格框线保…...

AutoSAR系列讲解(实践篇)7.6-实验:配置SWCRTE(下)
阅读建议: 实验篇是重点,有条件的同学最好跟着做一遍,然后回头对照着AutoSAR系列讲解(实践篇)7.5-OS原理进阶_ManGo CHEN的博客-CSDN博客理解其配置的目的和意义。本篇是接着AutoSAR系列讲解(实践篇)7.4-实验:配置SWC&RTE_ManGo CHEN的博客-CSDN博客的实验篇接着做…...

【node】使用express+gitee搭建图床,并解决防盗链问题
首先创建一个gitee的项目,详细步骤我就不一一说明 注解:大家记得将这个项目开源,还有记得获取自己的私钥,私钥操作如下: node依赖下载: "axios": "cors": "express"…...

蕨型叶分形
目录 要点 基本语句 EraseMode 习题 1 设置颜色 2 旋转蕨型叶图 3 枝干 4 塞平斯基三角形 要点 蕨型叶是通过一个点的反复变换产生的,假设x是一个含有两个分量的向量,可以用来表示平面内的一个点,则可以用Axb的形式对其进行变换。 基本…...

DevOps系列文章之 Git知识大全
Git常用命令 配置Git-SSH 配置Git的user name以及Git要关联的邮箱email git config --global user.name your name git config --global user.email your email 生成密钥 ruby 复制代码 $ ssh-keygen -t rsa -C "your email" 按三个回车,跳过设置密码&am…...