ubuntu 搭建gerrit服务器
前置条件:gerrit用户准备:
sudo adduser gerrit
sudo usermod -a -G sudo gerrit #在用户原有组的基础上,附加一个次要组 -a代表添加或者附加,-G代表一个群组
切换用户:
sudo su gerrit
也可用
sudo visudo
gerrit ALL=(ALL:ALL) ALL
将gerrit加入sudo权限
后续的操作最好都是在gerrit用户帐号下进行,否则某些文件的访问权限可能需要后面手动去做调整。
一、安装java
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
二、安装git
sudo apt-get install git
三、安装配置apache2
sudo apt-get install apache2
四、修改apache2配置文件
1、 sudo vim /etc/apache2/httpd.conf
<VirtualHost *:8081>
ServerName 192.168.31.139
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location "/login/">
AuthType Basic
AuthName "Gerrit Code Review"
Require valid-user
AuthBasicProvider file
AuthUserFile /home/gerrit/review_site/passwords
</Location>
AllowEncodedSlashes On
ProxyPass / http://127.0.0.1:8091/ nocanon #反向代理:把所有对 / 目录下的请求,全部转换成对 http://127.0.0.1:8091/ 。 nocanon 表示不加任务规则限制
</VirtualHost>
2、sudo vim /etc/apache2/apache2.conf
在未尾加入 : Include httpd.conf
3、添加对8081端口的监听
sudo vim /etc/apache2/ports.conf:
Listen 8081
4、启用相关模块:SSL、Proxy、Rewrite等
cd /etc/apache2/mods-enabled/
sudo ln -s ../mods-available/proxy.load
sudo ln -s ../mods-available/proxy.conf
sudo ln -s ../mods-available/proxy_http.load
sudo ln -s ../mods-available/proxy_balancer.conf
sudo ln -s ../mods-available/proxy_balancer.load
sudo ln -s ../mods-available/rewrite.load
sudo ln -s ../mods-available/ssl.conf
sudo ln -s ../mods-available/ssl.load
sudo ln -s ../mods-available/slotmem_shm.load
sudo ln -s ../mods-available/socache_shmcb.load
五、安装和配置gerrit
1、安装gerrit :
下载地址 https://download.csdn.net/download/zyfzhangyafei/12889763
java -jar gerrit-3.0.3.war init -d ~/review_site
安装配置建议先全部按默认配置走,也就是一直回车就可以了。
但是注意一下,后面安装插件部分建议全部选Y,也就是同意安装,避免后面再来手动安装。
2、修改gerrit配置文件 , 注意当前是在gerrit用户下进行的修改。
vim ~/review_site/etc/gerrit.config
[gerrit]
basePath = git
canonicalWebUrl = http://192.168.31.139:8081/
serverId = 77f7133c-e0af-4b75-b2da-002e9acf21eb
[database]
type = h2
database = /home/gerrit/review_site/db/ReviewDB
[container]
javaOptions = "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"
javaOptions = "-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance"
user = gerrit
javaHome = /usr/lib/jvm/java-8-openjdk-amd64/jre
[index]
type = LUCENE
[auth]
type = HTTP
[receive]
enableSignedPush = true
[sendemail]
enable = true
smtpServer = smtp.163.com
smtpServerPort = 465
smtpEncryption = SSL
sslVerify = true
smtpUser = XXXXXX@163.com
smtpPass = XXXXXXXX
from = CodeReview<XXXXXX@163.com>
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = http://*:8091/
[cache]
directory = cache
[gitweb]
type = gitweb
cgi = /usr/lib/cgi-bin/gitweb.cgi
3、配置gerrit帐号
touch ~/review_site/passwords
sudo htpasswd -b ~/review_site/passwords admin 123123
六、安装gitweb
1、sudo apt-get install gitweb
查看相关文件的位置
dpkg -L gitweb
/.
/etc
/etc/apache2
/etc/apache2/conf-available
/etc/apache2/conf-available/gitweb.conf
/etc/gitweb.conf
/usr
/usr/lib
/usr/lib/cgi-bin
/usr/share
/usr/share/doc
/usr/share/doc/gitweb
/usr/share/doc/gitweb/NEWS.Debian.gz
/usr/share/doc/gitweb/README
/usr/share/doc/gitweb/README.Debian
/usr/share/doc/gitweb/copyright
/usr/share/doc/gitweb/examples
/usr/share/doc/gitweb/examples/index.aux-generation
/usr/lib/cgi-bin/gitweb.cgi
/usr/share/doc/gitweb/changelog.Debian.gz
2、在gerrit.conf中,配置gitweb的信息。具体参看(五.3)
[gitweb]
type = gitweb
cgi = /usr/lib/cgi-bin/gitweb.cgi
七、重启gerrit和apache2
sudo ~/review_site/bin/gerrit.sh restart
sudo /etc/init.d/apache2 restart
八、登陆管理员,并添加pub key 到 gerrit中:
ssh-keygen -t rsa -C "3374185833@qq.com"
将 id_rsa.pub 内容发给管理员 ,管理员将pub key 添加到gerrit中:
cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCt9D9we0/lqZVTYLN1RQrEYjYxTXVefmd+rIWDGoSLrs+sKvEXq9x2o0hHHW5d0qY/w0dSD7ox2K0OVd/DKEBZj5zTUhSGCGKhvXe4n7934HE3McXgFVTqL3wPoEAZqfWWuqAVk6tpFez/PQ4IbG82OtW5uZKlvAu2hIAyA0ufmFU62O+7PzI5hKWog2950s7/9jxxswbKBi804Di08VKdtla4/vMPZQGyq7OwQXxdZeXX4LjSqnFarT5nD4AluRZPhvRD/HWrRRsPFDtUcwJ6F2q2RK+vTA7jZ12cpGB3YtjAcahHOqMGaM5eTrfcw4hJ3Odry3gd4hy3tx1oofHd 3374185833@qq.com
验证 :
ssh -p 29418 admin@192.168.31.139 :
**** Welcome to Gerrit Code Review ****
Hi admin, you have successfully connected over SSH.
Unfortunately, interactive shells are disabled.
To clone a hosted Git repository, use:
git clone ssh://admin@192.168.31.139:29418/REPOSITORY_NAME.git
九、clone代码到本地:
git clone ssh://你的用户@192.168.31.139:29418/仓库名.git
重要说明:
1、gitweb集成gerrit后,默认只有管理员用户才能查看gitweb超链接,普通用打开链接后页面显示Not Found。
如果想给普通的用户查看gitweb超链接的权限,则必须对项目设置refs/meta/config 的read权限。
而这个权限在All-Projects的ACL里只对Administrators用户和Project Owners开放。
2、用户在添加到passwords后,并没有加入到数据库。只有用户通过web登陆后,才会加入数据库中。才能对用户进行分组和授权。
3、在使用非公司内部邮件服务器进行邮件发送时,QQ邮件服务器不能正常使用,报500相关错误,原因可能是QQ邮件服务器做了限制,也可能是我不清楚QQ邮件服务器的端口造成。后面改成163的邮件服务器才将用户邮箱验证成功。这里特别说明一下,这个邮箱地址要和git指定的邮件地址保持一致。(要求)
分组说明:
系统默认会有以下用户组:
Administrators Gerrit管理员,该用户组默认拥有admin用户,也就是第一个注册用户
Anonymous User 任何用户未,登录或未登录
Non-Interactive Users Gerrit中执行批处理的用户
Project Owners 项目拥有者
Registerd Users 注册用户
我们根据自身业务需要增加和设置以下用户组:
developer组 : 开发组。针对参与项目的所有开发工程师。该组具有clone代码,提交开发分支的权限,以及向稳定分支提交change的权限。
reviewer组 :审查组。对工程师提交的change进行审查的权限。
verifier组 : 核实组。对change有合入权限。
审查用户可能同时拥有 审查组 和 核实组 的授权,也即审查和合入可能是同一个用户。
review过程需要+2,才能最终合入,即change提交者需要进行一次自审,再由审查组审核后方能合入。
---------------------------------------------------

[root@gerrit.yinzhengjie.org.cn ~]# htpasswd -cb /etc/httpd/passwords admin admin #注意,"-c"参数为创建,仅限第一次添加用户时使用,用户名和密码均为admin
Adding password for user admin
[root@gerrit.yinzhengjie.org.cn ~]# htpasswd -b /etc/httpd/passwords jason yinzhengjie #第二次创建时不要加"-c"参数。创建一个jason用户,密码为"yinzhengjie"
sudo htpasswd -m gerrit.password userName
Ubuntu下搭建基于apache2的gerrit+gitweb服务器 :
https://www.cnblogs.com/eastnapoleon/p/6497802.html
Gerrit代码审核服务器的工作流程和原理:
https://blog.csdn.net/yuanzhangmei1/article/details/25784225
Gerrit 代码审核(Code Review):
https://blog.csdn.net/qq_17342753/article/details/81236710
Gerrit审批流程设置:
https://blog.csdn.net/fduffyyg/article/details/83759762
权限说明
https://blog.51cto.com/zengestudy/1774176
更多推荐
所有评论(0)