【问题标题】:Having a remote test repository with git使用 git 拥有一个远程测试存储库
【发布时间】:2013-02-03 21:01:58
【问题描述】:

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

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

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

【问题讨论】:

    标签: git unit-testing repository git-bare


    【解决方案1】:

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

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

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

    【讨论】:

    • 我很想运行 Jenkins,但它基于 Java 且资源繁重——不适合我的 VPS。是否有不会让我的 VPS 崩溃的非 java jenkis-like 应用程序?
    • 我知道有几个人设法在他们的 VPS 上使用了BuildBot,但我不确定我是否会这样做。你是对的,这些工具往往有点重。如果你有一个开源项目,你可以试试Travis CI。他们还有一个名为Travis Pro 的私人项目版本。我不确定后者的成本是多少……现在可能什么都不是,因为它们处于测试阶段。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-11-20
      • 2013-01-04
      • 2017-04-29
      • 1970-01-01
      • 2011-03-17
      • 2011-06-05
      • 2011-09-12
      相关资源
      最近更新 更多