ubuntu搭建gerrit+gitweb代码审核系统
一、Gerrit的简介
Gerrit是Google开源的一套基于web的代码review工具,它是基于git的版本管理系统。Google开源Gerrit旨在提供一个轻量级框架,用于在代码入库之前对每个提交进行审阅。每个修改都将提交到gerrit上,但实际上没有真正意义的成为项目的一部分,直到提交被管理员review和submit。它是标准开源过程的一个简单工具来支持提交补丁程序,然后由项目成员在应用到代码库之前进行review。
二、Gerrit的搭建步骤
- 账号配置
- 配置gerrit的管理账号
sudo adduser gerrit
- 给gerrit增加sudo的管理员权限
sudo usermod -a -G sudo gerrit
- 后续所有的操作都需要切换到gerrit账号进行
sudo su gerrit
- 配置gerrit的管理账号
- 安装java环境
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
- 安装配置git环境
sudo apt-get install git
- 安装配置Apache2
- 下载Apache2
sudo apt-get install apache2
- 修改配置文件,后面会用到Apache的反射
sudo vi /etc/apache2/httpd.conf
这种方式是通过vi在命令里面修改
或者
sudo gedit /etc/apache2/httpd.conf
这种方式是通过打开一个文本编辑器进行修改 - 具体的修改的内容如下,我写了注释的地方需要注意根据自己的需求进行修改
- 下载Apache2
<VirtualHost *:8081> //这里是反射代理的端口号, ServerName 10.180.152.83 //这里是填写Apache反射代理的ip地址,也就是你服务器的ip地址 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 //这个路径是gerrit账户密码管理,后续的步骤中会创建此文件。路径有写正确
</Location> AllowEncodedSlashes On ProxyPass / http://127.0.0.1:8091/ nocanon //这里是代理反射,照着写就OK了 </VirtualHost>
注意:
如果http.conf没有Include到apache2.conf中,就需要手动添加:
sudo vi /etc/apache2.conf
添加如下,
Include http.conf
- 修改配置文件,添加对8081端口的监听:
sudo vi /etc/apache2/ports.conf
添加,
Listen 8081 //这里的8081端口号是上面配置的Apache2反射端口
- 开启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
gerrit的最新下载地址:https://www.gerritcodereview.com/
本教程使用的是gerrit-2.16- 进入到下载好的gerrit软件目录
cd home/gerrit/download
- 安装解压下载好的war包
java -jar gerrit-2.16.war init -d ~/review_site #这里的review_site是解压出来的包名,最好不要修改。避免不必要的错误
- 安装的时候,选择默认配置,一路回车,安装完成之后。打开浏览器输入 loccalhost:8080就能看到gerrit的界面了。
- 当然了,作为一名优秀的程序员,我们不能止步于默认配置。所以,我们对配置文件进行按需修改
sudo gedit ~/review_site/etc/gerrit.config
具体的修改内容如下:
- 进入到下载好的gerrit软件目录
[gerrit]
basePath = git //这里是配置gerrit项目管理仓库的名字。可以所以修改
serverId = 02481fa0-9b63-4b6a-9869-8b4e2a4364ee
canonicalWebUrl = http://110.180.152.83:8081/ //这里就是打开gerrit管理系统的地址了。这个地方和前面配置的Apache2的反射文件要一致
[database]
type = h2 //这里是选择数据库,gerrit支持h2/mysql/postsql三种,一般不是那种超级大型的团队管理,我们选择h2就够用了。
database = /home/gerrit/review_site/db/ReviewDB //这里是数据库的位置
[auth]
type = HTTP //这里一定要改,改成HTTP的方式。
[receive]
enableSignedPush = false
[sendemail] //这里是邮箱配置,如果是公司内网,发送邮件不方便的话,可以配置为sendemail = fasle就行了。后面我会教大家,绕过邮箱认证账号的方法。
smtpServer = smtp.company.com
smtpServerPort = ***
smtpEncryption = ssl
smtpUser = user@company.com //这里填写要发送验证信息的邮箱
smtpPass = ****** //这里输密码
sslVerify = false
from = Code Review < gerrit@company.com > //填写邮箱
[container]
user = gerrit //这里不要改动,选择gerrit登陆
javaHome = /usr/lib/jvm/java-7-openjdk-amd64/jre //这里是默认选择的Java路径
[sshd]
listenAddress = *:29418 //这里不准改,这里就选择默认的29418
[httpd]
listenUrl = proxy-http://*:8091/ //这里修改端口,*可以替换成对应的ip也可以不换
[cache]
directory = cache
- 配置一个gerrit的管理员账号:
touch ~/review_site/passwords //这个文件就是上面Apache配置的账号路径
sudo htpasswd -b ~/review_site/passwords admin admin //新增账号admin和密码
- 安装配置gitweb
- 下载安装gitweb
sudo apt-get install gitweb
- 查看相关配置文件的安装路径
dpkg -L gitweb
得到输出如下:
- 下载安装gitweb
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/gitweb
/usr/share/doc/gitweb/examples
/usr/share/doc/gitweb/examples/index.aux-generation
/usr/share/doc/gitweb/README.Debian
/usr/share/doc/gitweb/copyright
/usr/share/doc/gitweb/README
/usr/share/doc/gitweb/NEWS.Debian.gz
/usr/lib
/usr/lib/cgi-bin
/etc
/etc/apache2
/etc/apache2/conf.d
/etc/apache2/conf.d/gitweb
/etc/gitweb.conf
/usr/share/doc/gitweb/changelog.Debian.gz
/usr/lib/cgi-bin/gitweb.cgi
打开gerrit的config:
sudo gedit ~/review_site/etc/gerrit.config
添加从上面路径的最后一行
[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
- 访问gerrit管理界面
浏览器输入:
http://192.168.130.10:8081/
三、问题与总结
Q1: gerrit服务器搭在公司内部局域网,没有办法发送外部邮箱进行账号验证怎么办?
A1: 我们可以直接远程操作数据库进行修改账号的邮箱地址,具体方法如下:
- 为ssh的主机配置设置别名,在~/.ssh/config文件中添加:
Host review
Hostname 10.180.152.81
User admin //这个名字要和网站上管理员的名字相同
Port 29418
IdentityFile ~/.ssh/id_rsa
这样就可以简单通过ssh访问gerritl了。效果如下:
# ssh review **** Welcome to Gerrit Code Review ****
Hi username, you have successfully connected over SSH.
Unfortunately, interactive shells are disabled.
To clone a hosted Git repository, use:
git clone ssh://admin@review.domain.tld:29418/REPOSITORY_NAME.git
Connection to review.tafdc.org closed.
然后,通过ssh远程连接gerrit进行账号邮箱的配置。
ssh review gerrit set-account --add-email xxxxx@邮箱 admin
总结:
gerrit的代码审核系统是非常有必要学会的,这是提高代码质量和项目的重要方式。我们要在对code的review中,不断发现其他同事优秀的代码,也要接受自身code中不足之处。
ubuntu搭建gerrit+gitweb代码审核系统的更多相关文章
- ubuntu搭建Gerrit代码审核服务器
谷歌的 Android 开源项目在 Git 的使用上有两个重要的创新,一个是为多版本库协同而引入的 repo,另外一个重要的创新就是 Gerrit —— 代码审核服务器.Gerrit 为 git 引入 ...
- Ubuntu 搭建Ghost1.0博客系统
最近想使用Ghost搭建自己的博客网站,网上搜索了下大多都是1.0之前版本搭建的文章,但是Ghost1.0版本已经可用好一段时间了,所以决定根据官方文档搭建Ghost1.0版本的博客系统. 下面开始一 ...
- Gerrit代码审核服务器搭建全过程
Gerrit代码审核服务器搭建全过程 转载请标明出处:http://blog.csdn.net/ganshuyu/article/details/8978614 环境:Ubuntu12.xx 1.建立 ...
- gerrit代码审核工具之“error unpack failed error Missing unknown”错误解决思路
使用gerrit代码审核工具时遇到error: unpack failed: error Missing unknown d6d7c89bd1d77f44c5c8e99437aaffbfc0684e7 ...
- ubuntu搭建svn服务器并htpp访问版本库并svn与web同步
Ubuntu搭建SVN服务器多版本库 1 介绍 Subversion是一个自由,开源的版本控制系统,这个版本库就像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况.这样就可 ...
- Git版本控制之ubuntu搭建Git服务器
Git是一个开源的分布式版本控制系统,可以有效.高效的处理从很小到非常大的项目版本管理.使得开发者可以通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库,也可以将代码提交到Git服务 ...
- 【原创】SQL审核系统
前言 应公司dba的需求,做了一个sql审核并可以执行.记录的系统,整个系统有三种角色: DBA(需要管理员手动登记) 运维人员(需要管理员手动登记) 开发人员(默认注册后用户) 权限分配如下: 一些 ...
- ubuntu搭建DNS
ubuntu搭建DNS 一. bind简介: BIND是Domain Name System (DNS) 协议的一个实现,提供了DNS主要功能的开放实现,主要包括以下三种: *域名服务器 *D ...
- Ubuntu 搭建PHP开发环境
Ubuntu确实很好玩.有喜欢的命令行,简洁的界面,不同于Window要的感觉.偶尔换换环境工作,学习Linux的思维方式,是一种不错的做 法.之前也折腾过Ubuntu,不过,因为网络的问题,一直没有 ...
随机推荐
- Jmeter测试结果分析(下)
Jmeter测试结果分析(下) 前文再续,续接上一回.上一篇讲了如何利用Assertion将测试结果进行初步的筛选.那么,当我们拿到了测试结果之后,我们应该如何去看待它们呢?它们又是怎么来的呢? 一. ...
- js 闭包解决方案
相比很多人都遇见过这样的情况: 给一个ul的所有li绑定行为,在点击时获取其index. 假设结构如下: <body> <ul> <li>0</li> ...
- 前端vscode常用插件
Auto Rename Tag 这是一个html标签的插件,可以让你修改一边标签,另外一边自动改变. Beautify 格式化代码插件 Braket Pair Colorizer 给js文件中的每一个 ...
- P1097 【统计数字】
超可爱的题目链接 这题是真不难,就是刚开始被自己的智商坑了一次... 用数组的常规做法实在是有点不切实际..数据大了. 所以用数组读入,再用循坏处理. 附上代码: #include<set> ...
- flask_alembic操作
HOSTNAME = '127.0.0.1' PORT = 3306 DATABASE = 'first_sqlalchemy_demo' USERNAME = 'root' PASSWORD = ' ...
- 瀑布布局(waterflall flow)实现
瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动.这种布局还会不断加载数据块并附加至当前尾部.最早采用此布局的网站是Pinterest,逐渐 ...
- 啃掉Hadoop系列笔记(01)-Hadoop框架的大数据生态
一.Hadoop是什么 1)Hadoop是一个由Apache基金会所开发的分布式系统基础架构 2)主要解决,海量数据的存储和海量数据的分析计算问题. 3)广义上来说,HADOOP通常是指一个更广泛的概 ...
- servlet_cdi自动注入
@WebServlet("/cdiservlet")//url映射,即@WebServlet告诉容器,如果请求的URL是"/cdiservlet",则由NewS ...
- 忘记虚拟机中Linux的登录密码解决办法
一.重启系统,在开机过程中,快速按下键盘上的方向键↑和↓.目的是告知引导程序,我们需要在引导页面选择不同的操作,以便让引导程序暂停. 2.使用↑和↓将选择行设置为第一行(背景高亮即为选中),按下键盘上 ...
- Java服务,内存OOM问题如何快速定位? (转)
转自:公众号 架构师之路 问题:有一个Java服务出现了OOM(Out Of Memory)问题,定位了好久不得其法,请问有什么好的思路么? OOM的问题,印象中之前写过,这里再总结一些相对通用的方 ...