为什么Behat PHP命令在终端中工作,而在Jenkins中却没有?

时间:2013-06-12 21:45:35

标签: php linux jenkins terminal behat

我正在研究如何让Jenkins自动为我们运行Behat测试。所以我在我的本地机器上安装了Jenkins(在Ubuntu 12.10上运行)。我已经能够从我的本地机器上运行Behat几周了。

在我的命令行中,我切换到目录并运行以下命令:

cd /virtualhosts/automated-testing/behat/ecash
php bin/behat -p phantomjs features/populate.feature

从这里开始,它会出现关于正在运行哪些步骤以及每个步骤如何运行的所有漂亮语法。这很好用。然后我将以下内容放入Jenkins:

whoami
cd /virtualhosts/automated-testing/behat/ecash
pwd
php bin/behat -p phantomjs features/populate.feature

“whoami”返回“jenkins”,并不奇怪。 “pwd”显示我在上一步中指定的目录。然后,当它到达PHP命令时,它给了我:

PHP Fatal error:  Interface 'Behat\Mink\Driver\DriverInterface' not found in /virtualhosts/automated-testing/behat/ecash/vendor/behat/mink-browserkit-driver/src/Behat/Mink/Driver/BrowserKitDriver.php on line 34

然后进入堆栈跟踪。所以这让我摸不着头脑。我想也许它使用的是另一个php.ini文件。所以我从Jenkins和我的终端运行了“php -i”并获得了相同的文件。然后我想也许它不喜欢用户。所以我将Jenkins用户添加到我的组中(因为我创建了文件)。仍然无效。

Soooo,我在这里做错了什么?为什么这样做不起作用?这没有任何意义。

1 个答案:

答案 0 :(得分:1)

事实证明,问题是一个权限问题。 Jenkins以用户“jenkins”(显然)运行。但这些文件归我所有。因此,如果我将整个项目称为“jenkins”作为所有者,我现在可以让Jenkins运行它。当然现在我不能像我一样运行它。

但这不是什么大不了的事。我只是使用“sudo -u”检查我的存储库中的文件作为Jenkins用户,我们的QA Jenkins安装可以整天运行Behat。

谢谢!