我正在尝试让我的 Karma 单元测试在远程 Jenkins 服务器上运行。此 Jenkins 服务器在 Linux 上运行,已安装旧版本的 PhantomJS 并在 env 中定义了 PHANTOMJS_BIN。我正在使用 gulp-karma 和 karma-phantomjs-launcher-nonet 包来运行 karma 测试。
然而,当 jenkins 触发 Karma 时,它似乎无法生成 PhantomJS。我收到以下错误:
[13:33:00] 启动 Karma 服务器... [32mINFO [karma]: [39mKarma v0.12.37 服务器在http://localhost:9876/启动[32mINFO [launcher]: [39mStarting browser PhantomJS [31mERROR [karma]: [39m{ [Error: spawn EACCES] code: 'EACCES', errno: 'EACCES', syscall: 'spawn' } 错误:在出口处产生 EACCES。 _errnoException (util.js:874:11) 在 ChildProcess.spawn (internal/child_process.js:298:11) 在 exports.spawn (child_process.js:339:9) 在 Object._execCommand (/appl/jenkins/workspace/ ps-lib/node_modules/karma/lib/launchers/process.js:63:21) 在 Object._start (/appl/jenkins/workspace/ps-lib/node_modules/karma-phantomjs-launcher-nonet/index.js: 40:10)在对象。(/appl/jenkins/workspace/ps-lib/node_modules/karma/lib/launchers/process.js:14:10) 在emitOne (events.js:82:20) 在 Object.emit (events.js:169: 7) 在 Object.start (/appl/jenkins/workspace/ps-lib/node_modules/karma/lib/launchers/base.js:40: 10) 在 /appl/jenkins/workspace/ps-lib/node_modules/karma/lib/launcher.js:88:15 在 Array.forEach (native) at [object Object].launch (/appl/jenkins/workspace/ps -lib/node_modules/karma/lib/launcher.js:40:11) 在 [object Object].invoke (/appl/jenkins/workspace/ps-lib/node_modules/karma/node_modules/di/lib/injector.js: 75:15)在服务器。(/appl/jenkins/workspace/ps-lib/node_modules/karma/lib/server.js:62:18) 在 Server.g (events.js:260:16) 在 emitNone (events.js:72:20)在 Server.emit (events.js:166:7) 在 emitListeningNT (net.js:1260:10) 在 doNTCallback1 (node.js:430:9) 在 process._tickCallback (node.js:352:17) 在服务器上调用 (/appl/jenkins/workspace/ps-lib/node_modules/karma/node_modules/di/lib/injector.js:75:15)。(/appl/jenkins/workspace/ps-lib/node_modules/karma/lib/server.js:62:18) 在 Server.g (events.js:260:16) 在 emitNone (events.js:72:20)在 Server.emit (events.js:166:7) 在 emitListeningNT (net.js:1260:10) 在 doNTCallback1 (node.js:430:9) 在 process._tickCallback (node.js:352:17) 在服务器上调用 (/appl/jenkins/workspace/ps-lib/node_modules/karma/node_modules/di/lib/injector.js:75:15)。(/appl/jenkins/workspace/ps-lib/node_modules/karma/lib/server.js:62:18) 在 Server.g (events.js:260:16) 在 emitNone (events.js:72:20)在 Server.emit (events.js:166:7) 在 emitListeningNT (net.js:1260:10) 在 doNTCallback1 (node.js:430:9) 在 process._tickCallback (node.js:352:17)
/appl/jenkins/workspace/ps-lib/tasks/test.js:15 抛出错误;^ 错误:在 ChildProcess 完成 (/appl/jenkins/workspace/ps-lib/node_modules/gulp-karma/index.js:56:30) 时,业力以代码 1 退出。(/appl/jenkins/workspace/ps-lib/node_modules/gulp-karma/index.js:82:7) 在 ChildProcess.emit (events.js:172:7) 的 emitTwo (events.js:87:13)在 Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
所以在我看来,由于授权原因,我的业力无法运行 PhantomJS,对吗?phantomjs 安装仍然是由用户 jenkins//jenkins 完成的,所以 jenkins 应该能够运行它,对吧?