出于一个美好的目的,当代码提交之前,需要自动通知相关人员进行代码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
还有就是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已经安装好了,参考下面的文档创建一个站点:
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 ,好,看到真神了。我终于看到你了!
好了,内容已经太长了,超过了我的习惯。另开一篇文章再描述如何配置和使用吧。还有不少事情要介绍。