【问题标题】:Karma cannot start Firefox with Jenkins and Ubuntu 12.04Karma 无法使用 Jenkins 和 Ubuntu 12.04 启动 Firefox
【发布时间】:2014-08-15 22:14:59
【问题描述】:

我已经设置了一个应该运行 Firefox 的 Jenkins 作业。使用 Jenkins 用户登录 Ubuntu,我可以毫无问题地手动启动 Firefox。但是,当我在 Jenkins 中运行工作时,我得到:

[EnvInject] - Loading node environment variables.
Building in workspace /var/lib/jenkins/jobs/cbx4-ci/workspace
Fetching changes from the remote Git repository
Fetching upstream changes from git@bitbucket.org:cognibox/cbx4.git
Checking out Revision c90b791227b3788c2e023fd13db74ed1664428d1 (origin/master)
[EnvInject] - Executing scripts and injecting environment variables after the SCM step.
[EnvInject] - Injecting as environment variables the properties content 
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
FIREFOX_BIN=/usr/bin/firefox

[EnvInject] - Variables injected successfully.
[workspace] $ /bin/sh -xe /tmp/hudson985724635788604565.sh
+ bash -ex runkarma.sh
+ node_modules/karma/bin/karma start config/karma.conf.js --reporters junit
[32mINFO [karma]: [39mKarma v0.10.9 server started at http://localhost:9876/
[32mINFO [launcher]: [39mStarting browser Firefox
[31mERROR [launcher]: [39mCannot start Firefox

[32mINFO [launcher]: [39mTrying to start Firefox again.
[31mERROR [launcher]: [39mCannot start Firefox

[32mINFO [launcher]: [39mTrying to start Firefox again.
[31mERROR [launcher]: [39mCannot start Firefox

如您所见,我已注入环境变量以指向 Firefox。

如果有帮助的话,一些有用的版本号:

詹金斯 1.546 NodeJs 0.10.24 业力 0.10.9

编辑:

很高兴知道我必须首先为 jenkins 用户执行操作才能运行 firefox。作为我的主要用户,我必须通过xhost +local: 让其他用户能够启动firefox。否则,jenkins 用户会不断收到以下错误。

No protocol specified
No protocol specified
No protocol specified
No protocol specified
Error: cannot open display: :0

虽然这可能是我解决的一个单独问题,但它可能与我提出的问题有关,所以我觉得添加这个细节很重要。

【问题讨论】:

  • 我对使用 linux 的 jenkins 设置了解不多,但我发现当我可以手动运行某些东西但不能在 Jenkins 上运行时,这通常与 jenkins 在环境中的运行方式有关,并且通常缺乏权限对于特定类型的连接。我也会尝试在盒子上运行确切的命令,看看我是否再看到 Jenkins 正在记录的内容。
  • 我不确定你所说的“在盒子上运行确切的命令”是什么意思?
  • 我要检查的第一点是转到 karma 运行时文件夹(运行它的位置),然后检查那里的权限以执行 firefox。我尝试查看是否可以从该文件夹中启动 Firefox execute - commandline(我的假设是拥有 karma 的用户只能运行 firefox)。然后,业力的行为是只有超级用户才能拥有这样的特权。不过,对我来说,Jenkins 权限完全是一个新主题。你做到了,在这方面你比我好。
  • 不幸的是 Firefox 从那里运行良好。另外,我从 jenkins 运行的命令可以作为用户 jenkins 从命令行成功运行。我将用我刚刚想到的更多细节更新问题,可能对任何试图提供帮助的人有用。

标签: jenkins karma-runner


【解决方案1】:

知道了。事实证明,问题源于对如何运行业力的误解。

Jenkins 任务正在执行karma start,自动监视设置为 true。相反,我在 rc.local 中使用 autowatch false 启动了业力(脚本在启动时运行),而 Jenkins 任务改为执行 karma run。这完全解决了问题。

编辑:安装 xvnc plugin,并激活它以进行 karma start 和 karma run 的构建工作。

编辑:当我升级到 14.04 时,问题又出现了。修复是确保在构建中注入的环境变量指向 X11 版本。

FIREFOX_BIN=/usr/bin/X11/firefox
CHROME_BIN=/usr/bin/X11/google-chrome

【讨论】:

    【解决方案2】:

    您介意使用--log-level debug 和--no-colors 运行业力,以便我们更好地了解它失败的原因吗?

    您也尝试过使用其他浏览器吗? 我在 Jenkins 中运行 GUI 工具时经常遇到问题。

    您可能想尝试使用 PhantomJS (http://phantomjs.org/) 运行您的测试套件,看看无头浏览器是否能解决问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 2013-05-14
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      相关资源
      最近更新 更多