【发布时间】: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