我将 Hudson 用于 CI,并在其中使用 Phing 进行自动化测试。当我在 build.xml 中指定一个 phpunit 任务时,就会运行测试套件。我的问题是:这是怎么发生的?Hudson 在 JVM 中运行,而 PHP 需要一个 PHP 容器。
似乎 PHP 是作为 CLI 独立应用程序安装的。如果是这种情况,那么我可以以某种方式运行用 Phing 不支持的 phpRack 编写的测试。正确的?但是如何?
我一直在搜索这个,但似乎 phpRack 并没有得到其他人的很好支持。
Ant 使用一个<exec>
任务来运行大多数外部工具,例如 PHPUnit。如果 PhpRack 有 CLI 模式,你可以以同样的方式使用它。但是,您需要一个用于输出的后处理器来确定通过或失败。
编辑:哎呀,我怎么想念Phing?哈哈。与描述的其他答案相同的原则适用。
正如前面的答案中提到的,只要您可以从 shell 运行它,您就可以在 Phing 中运行任何东西。您在 Hudson/Jenkins 的工作配置中寻找的是:
添加构建步骤 -> 执行外壳 -> 命令。
在那里放一些类似的东西/usr/bin/php /path/to/your/script.php
,它就会被执行。
注意有一个集成 Phing phpRack 的示例,因此您可能实际上可以使用它:https ://github.com/tpc2/phprack/wiki/Phing
Hudson/Jenkins 不会“直接”调用 PHP,而是在您的构建文件的帮助下调用。您的 phing.xml 或 ant.xml 或您使用的任何内容。
而那个文件只是触发正常的系统调用(在 php 中你会做system("/usr/bin/php file.php");
或类似的事情。
因此,如果您要调用命令行工具,它就会像这样调用它。如果您发送一个 http 请求(如 phpRack 示例所示),您需要确保您安装了一个正常工作的 Web 服务器,并且可以访问该 url,就像浏览器访问它一样。