在我目前的设置中,我的开发服务器有一堆裸git存储库,我和其他一些用户可以从中推送。但是,现在,我想在服务器本身上集成PHPUnit测试。
我最初的想法是在每个名为tests
的仓库中有一个子目录,然后运行测试VisualPHPUnit,这样我就可以通过服务器的“网站”查看结果了。但是,看到远程存储库是裸露的,我无法准确地告诉VPHPU寻找测试目录 - 因为它们并不存在。
有没有更好的做事方式?我想可能有另一个存储库,其中包含所有项目的测试,并且只是让它不是裸露的 - 但这违反了git标准并且可能会破坏它们。
答案 0 :(得分:1)
我认为您最好设置Jenkins或QuickBuild。 Jenkins是开源的,而QuickBuild则不是。但QuickBuild确实有免费版本,我发现它比前者更可靠。两者都允许您签出源代码,运行测试并发布结果。从长远来看,它将允许您做更多的事情,例如打包产品进行部署。
如果您试图让当前的想法发挥作用,那么您将需要一个post-receive挂钩,它将在某处检查代码,针对结账运行测试,并将结果发布到已知位置。你需要考虑一些事情。例如,您想测试每个分支吗?只是一个? post-receive挂钩将告诉您所有正在更新的分支,因此如果您只想测试master
,则可能需要进行过滤。 Pro Git提供了有关hooks以及如何自定义它们的一些信息。
我会避免使用裸存储库。你将不得不处理诸如推入裸存储库之类的事情,这是令人不悦的。我想最后,你真的希望Jenkins或QuickBuild帮助你。
答案 1 :(得分:1)
我建议您使用gerrit管理远程git存储库并设置jenkins以使用gerrit plugin运行所有自动测试。
这样你就可以将你的变化推向gerrit,gerrit将通知jenkins,jenkins对新推出的代码运行所有测试。现在gerrit打开一篇评论,介绍测试的变化和结果。然后,当jenkins很高兴并且变化看起来很清醒时,您将更改合并到官方分支,其他开发人员可以从中再次获取它。
此过程可能看起来有点复杂,但它确保只有成功测试的代码才会驻留在您的存储库中,如果您中断任何测试,您可以确定已将其破坏。 - 这是自动测试的重点。 ;)