【问题标题】:How does Hudson running on JVM calls phpUnit which requires a php container?JVM上运行的Hudson如何调用需要php容器的phpUnit?
【发布时间】:2011-09-22 21:39:45
【问题描述】:

我将 Hudson 用于 CI,并在其中使用 Phing 进行自动化测试。当我在 build.xml 中指定一个 phpunit 任务时,就会运行测试套件。我的问题是:这是怎么发生的? Hudson 在 JVM 中运行,而 PHP 需要一个 PHP 容器。

似乎 PHP 是作为 CLI 独立应用程序安装的。如果是这种情况,那么我可以以某种方式运行用 Phing 不支持的 phpRack 编写的测试。正确的?但是怎么做?

我一直在搜索这个,但似乎其他人不太支持 phpRack。

【问题讨论】:

    标签: php hudson phpunit phing


    【解决方案1】:

    Ant 使用<exec> 任务来运行大多数外部工具,例如 PHPUnit。如果 PhpRack 有 CLI 模式,你可以以同样的方式使用它。但是,您需要一个后处理器来确定输出是否通过。

    编辑:哎呀,我怎么想念Phing?哈哈。与描述的其他答案相同的原则。

    【讨论】:

      【解决方案2】:

      Hudson/Jenkins 不会“直接”调用 PHP,而是借助您的构建文件。你的 phing.xml 或 ant.xml 或任何你使用的东西。

      并且该文件只是触发正常的系统调用(在 php 中你会执行 system("/usr/bin/php file.php"); 或类似的操作。

      因此,如果您要调用命令行工具,它只是这样调用它。如果您发送一个 http 请求(如 phpRack 示例所示),您需要确保您安装了一个正常工作的 Web 服务器,并且可以像浏览器访问它一样访问该 url。

      【讨论】:

        【解决方案3】:

        正如前面的答案中提到的,只要您可以从 shell 运行它,您就可以在 Phing 中运行任何东西。 您在 Hudson/Jenkins 的工作配置中寻找的是:

        添加构建步骤 -> 执行 Shell -> 命令

        只需在其中输入/usr/bin/php /path/to/your/script.php 之类的内容,它就会被执行。

        NB 有一个集成 Phing phpRack 的例子,所以你可以实际使用它:https://github.com/tpc2/phprack/wiki/Phing

        【讨论】:

          最近更新 更多