php - 为什么 Behat PHP 命令在终端中有效,但在 Jenkins 中无效?

标签 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 用户添加到我的组中(因为我创建了文件)。还是不行。

太棒了,我做错了什么?为什么这不起作用?这没有任何意义。

最佳答案

原来问题有点权限问题。 Jenkins 以用户“jenkins”身份运行(很明显)。但这些文件归我所有。因此,如果我将整个项目命名为“jenkins”作为所有者,我现在可以让 Jenkins 运行它。当然现在我不能自己运行它。

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

谢谢!

关于php - 为什么 Behat PHP 命令在终端中有效,但在 Jenkins 中无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17075908/

相关文章:

linux - xvfb 和 wkhtmltoimage 始终抓取 1024 宽度的图像

linux - 如何在编译中设置内核打印级别

jenkins - 在 Jenkins 管道的各个阶段之间传输数据

php - 在 Dockerfile 中使用环境变量

php - laravel 如何找到模型与其在数据库中的表之间的连接

php - HTML5 Websocket 向服务器发送同步数据

linux - bash 脚本 while 循环读取来自用户的输入

php - 如何在树复选框上实现 jquery(从头开始构建 - 无插件)

Jenkins 问题: hudson. remoting.ChannelClosedException: channel 已关闭

jenkins - 手动升级Jenkins Windows native 软件包