Review board 和 Git 配合使用 一

长平狐 发布于 2012/08/28 16:36
阅读 2K+
收藏 0

出于一个美好的目的,当代码提交之前,需要自动通知相关人员进行代码review,当review代码的人批准后才能将代码提交到代码仓库中,否则修改后再次review。

项目的工程师可能不在一个地方办公,比如我们ESRI,工程师分布在不同的国家的不同部门。因此需要Email和Web站点来协同工作。


我们的代码管理也是多种多样,美国团队使用Starteam,我们中国使用Git. 本来在Git之上有一个很好的review工具,叫做gerrit。不过考虑到能够照顾不同的仓库管理软件,还是先试用Review board吧,因为它支持的代码管理软件很多,还提供了API让我们自己编写程序进行扩展。官方站点参考:http://www.reviewboard.org/


使用环境:

CentOS 6.2 (64bit)上安装了Git和gitosis进行管理。gitosis有点老旧,以后再换吧。同时也编译安装了lighttpd最新版本.另外就是Review board了。

git安装可以参考我的一篇文章:http://blog.csdn.net/sheismylife/article/details/7204345 ,虽然是Ubuntu上的安装方式,但是在CentOS上变化不大。


安装的细节我不会多说,但是会点出我遇到的问题及如何解决的。

1.安装文档参考http://www.reviewboard.org/docs/manual/1.6/admin/installation/linux/

2.我安装的是lighttpd,下载源代码,并且编译安装,下载地址:http://www.lighttpd.net/download

不要在意fastcgi,因为默认就是支持的。安装文档参考:http://redmine.lighttpd.net/projects/lighttpd/wiki/InstallFromSource

首先运行./configure,如果提示有什么模块需要安装,可以直接禁止。

编译完成后,

创建init script,注意看CentOS的脚本在下面有专门的描述:

If you're running CentOS or RHEL you might need to change the first line to this

sed -e 's/FOO/lighttpd/g' doc/initscripts/rc.lighttpd.redhat > /etc/init.d/lighttpd
之后,就可以编辑/etc/lighttpd/lighttpd.conf文件,修改配置,注意将端口设置为80。因为Review board发送email的时候email内容里面的链接地址不会带上端口号。让大家用起来方便一点吧。

还有就是lighttpd不允许(当然你可以想办法绕过)直接使用root用户运行,它让你可以用root权限启动,然后切换到另一个用户身份运行。我一开始创建了lighttpd用户,一切都很好。但是Review board需要访问Git仓库,而且是通过本地文件路径直接访问的那种,比如:/home/git/repositories/maventest.git,所以干脆让lighttpd运行在git用户下得了。这也是可以在lighttpd.conf文件中配置的。

另外就是要能够允许其他机器访问lighttpd,配置的时候用0.0.0.0吧。好,快速看一下我是怎么配置的。

#######################################################################                                                                                                          
##                                                                                                                                                                               
##  Basic Configuration                                                                                                                                                          
## ---------------------                                                                                                                                                         
##                                                                                                                                                                               
server.port = 80

##                                                                                                                                                                               
## Use IPv6?                                                                                                                                                                     
##                                                                                                                                                                               
#server.use-ipv6 = "enable"                                                                                                                                                      

##                                                                                                                                                                               
## bind to a specific IP                                                                                                                                                         
##                                                                                                                                                                               
server.bind = "0.0.0.0"

##                                                                                                                                                                               
## Run as a different username/groupname.                                                                                                                                        
## This requires root permissions during startup.                                                                                                                                
##                                                                                                                                                                               
server.username  = "git"
server.groupname = "git"

好,棘手的事情已经介绍了一部分。剩下的就是安装Review board以来的服务,比如MySQL,Memcached,以及一些其他的库和程序。参考上面列出的文档。


好。假定现在review board已经安装好了,参考下面的文档创建一个站点:

http://www.reviewboard.org/docs/manual/1.6/admin/installation/creating-sites/

创建的时候注意:

事先在mysql中创建一个数据库,名字好像叫做:reviewboard :)

回答问题的时候,要将可以使用的mysql 用户名和密码填入,review board用它来访问mysql,而不是替你创建用户。我一开始搞错了。

指定review board站点的管理员的用户名和密码,稍后用来登录网站并设置。


在我的lighttpd.conf文件最后,引入review board为我们准备好的配置文件。

include "/var/www/reviews.esri.com/conf/lighttpd.conf"


重新启动lighttpd的时候会警告,有些模块重复引用了两次,可以手动修改去掉。慢慢找吧,难度不大,我当时没有记录。


好,现在可以登录我们的网站了。Oh,不行。检查一下防火墙,iptable规则居然不允许我从外部访问。直接关掉它。

还是不行,看一下/var/www/reviews.example.com/conf/lighttpd.conf文件,自动生成了如下配置:

$HTTP["host"] =~ "battleship",battleship是服务器的主机名,一定是刚才自动创建的时候产生的。好,将客户端的hosts文件修改一下

10.112.18.104 battleship

然后通过浏览器访问http://battleship ,好,看到真神了。我终于看到你了!


好了,内容已经太长了,超过了我的习惯。另开一篇文章再描述如何配置和使用吧。还有不少事情要介绍。









原文链接:http://blog.csdn.net/sheismylife/article/details/7560250
加载中
0
donhui
donhui
reviewboard不支持 Starteam的吧!
返回顶部
顶部