2013-02-03 216 views
0

在我目前的设置中,我的开发服务器有一大堆我和其他用户推送到的裸露git存储库。但是,现在,我想在服务器本身上集成PHPUnit测试。有git的远程测试存储库

我最初的想法是在每个存储库中有一个名为tests的子目录,然后有类似VisualPHPUnit的东西运行测试,以便通过服务器的“网站”查看结果。但是,看到远程存储库是裸露的,我不能准确地告诉VPHPU去查找测试目录 - 因为它们不是真的在那里。

有没有更好的做事方式?我想可能有另一个存储库包含所有项目的测试,并且只是使其不是光秃秃的 - 但这违背了git标准,可能会破坏一些东西。

回答

1

我想你会更好地设置JenkinsQuickBuild。詹金斯是开源的,而QuickBuild不是。但QuickBuild有一个免费版本,我发现它比前者更可靠。两者都将允许您签出源代码,运行测试并发布结果。从长远来看,它可以让您做更多的事情,例如打包您的产品进行部署。

如果您试图使您的当前想法正常工作,您将需要一个post-receive挂钩,它将检查某处的代码,对结帐运行测试,并将结果发布到已知位置。不过你需要考虑一些事情。例如,你想测试每个分支吗?只有一个?接收后的挂钩会告诉你所有正在更新的分支,所以如果你只想测试master,你可能需要过滤。 Pro Git有关于hooks的一些信息以及如何定制它们。

我会避免使用裸仓库。你必须处理诸如推入裸露的仓库之类的事情,这是令人不悦的。我想最终你会真的想要Jenkins或QuickBuild来帮助你。

+0

我很想运行Jenkins,但是它的基于Java的并且重载了沉重 - 对我的VPS不理想。有没有不会让我的VPS陷入瘫痪的非java类似于jenkis的应用程序? – n0pe

+0

http://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software – michas

+0

我知道一些设法在他们的VPS上使用[BuildBot](http://trac.buildbot.net/)的人,尽管我是不知道我会。你说得对,这些工具往往有点沉重。如果你有一个开源项目,你可以试试[Travis CI](https://travis-ci.org)。他们还有一个名为[Travis Pro](https://travis-ci.com)的私人项目。我不确定后者的成本是多少......现在可能没有什么是他们的测试版了。 – jszakmeister

1

我建议用gerrit来管理你的远程git仓库,并设置jenkins以使用gerrit plugin来运行所有的自动测试。

这样你把你的变化推向gerrit,gerrit会通知jenkins,jenkins对新鲜推送的代码运行所有测试。现在gerrit开始审查,介绍测试的变化和结果。然后,当jenkins很高兴并且变化看起来很健康时,您可以将您的更改合并到另一个开发人员可以从中再次获取的官方分支。

此过程看起来有点复杂,但它确保只有成功测试的代码才会驻留在您的存储库中,并且如果您打破任何测试,则可以确定是否破坏了它。 - 这是自动测试的重点。 ;)