0

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

我最初的想法是在每个 repo 中都有一个名为 的子目录tests,然后让VisualPHPUnit之类的东西运行测试,这样我就可以通过服务器的“网站”查看结果。但是,由于远程存储库是裸露的,我不能完全告诉 VPHPU 去寻找测试目录——因为它们实际上并不存在。

有没有更好的做事方式?我在想也许有另一个存储库,其中包含所有项目的测试,只是让它不是裸露的——但这违反了 git 标准并且可能会破坏东西。

4

2 回答 2

1

我认为您最好设置JenkinsQuickBuild。Jenkins 是开源的,而 QuickBuild 不是。但 QuickBuild 确实有免费版本,我发现它比前者更可靠。两者都允许您检查源代码、运行测试并发布结果。从长远来看,它可以让您做更多事情,例如打包您的产品以进行部署。

如果你一心想要让你当前的想法生效,你需要一个 post-receive 钩子,它会在某处签出代码,针对签出运行测试,并将结果发布到已知位置。不过,您需要考虑一些事情。例如,您想测试每个分支吗?只有一个吗?post-receive 钩子会告诉你所有正在更新的分支,所以如果你只想测试,你可能需要过滤master。Pro Git 有一些关于钩子以及如何自定义它们的信息。

我会避免使用裸存储库。您将不得不处理诸如推入裸存储库之类的事情,这是不受欢迎的。我认为最后,您真的希望 Jenkins 或 QuickBuild 帮助您。

于 2013-02-03T22:33:33.593 回答
1

我建议使用 gerrit 管理您的远程 git 存储库设置jenkins以使用gerrit 插件运行所有自动测试。

这样你将更改推送到 gerrit,gerrit 会通知 jenkins,jenkins 会在新推送的代码上运行所有测试。现在 gerrit 打开一个评论,展示测试的变化和结果。然后,当 jenkins 满意并且更改看起来很正常时,您将更改合并到官方分支,另一个开发人员可以从中再次获取它。

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

于 2013-02-03T23:13:21.750 回答