一般公司在做代码审核的时候选择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博客