2017-05-07 35 views
1

我已经设置了AWS Codepipeline。如何解决错误:在运行Karma时在Jenkins上产生EACCES?

该管道使用Git作为源,Jenkins进行测试,并使用EC2实例进行部署。

该项目基于Angular Starter by Angular Class。因此,它使用Karma进行单元测试。

Jenkins服务在Ubuntu 16.04上运行。

Karma使用Headless Chrome进行测试。

的问题是,我目前得到詹金斯运行测试时folloing错误:

[31m07 05 2017 14:30:35.779:ERROR [karma]: [39m{ Error: spawn EACCES 
    at exports._errnoException (util.js:1050:11) 
    at ChildProcess.spawn (internal/child_process.js:319:11) 
    at exports.spawn (child_process.js:378:9) 
    at spawnWithoutOutput (/var/lib/jenkins/workspace/ExampleTask/node_modules/karma/lib/launchers/process.js:168:24) 
    at Object.ProcessLauncher._execCommand (/var/lib/jenkins/workspace/ExampleTask/node_modules/karma/lib/launchers/process.js:76:21) 
    at Object.ProcessLauncher._start (/var/lib/jenkins/workspace/ExampleTask/node_modules/karma/lib/launchers/process.js:33:10) 
    at Object.<anonymous> (/var/lib/jenkins/workspace/ExampleTask/node_modules/karma/lib/launchers/process.js:19:10) 
    at emitOne (events.js:101:20) 
    at Object.emit (events.js:191:7) 
    at Object.BaseLauncher.start (/var/lib/jenkins/workspace/ExampleTask/node_modules/karma/lib/launchers/base.js:42:10) 
    at Object.j (/var/lib/jenkins/workspace/ExampleTask/node_modules/karma/lib/launcher.js:116:17) 
    at Object.setTimeout.bind.j (/var/lib/jenkins/workspace/ExampleTask/node_modules/qjobs/qjobs.js:143:18) 
    at ontimeout (timers.js:386:14) 
    at tryOnTimeout (timers.js:250:5) 
    at Timer.listOnTimeout (timers.js:214:5) code: 'EACCES', errno: 'EACCES', syscall: 'spawn' } 

我已经做了一些研究与以下结果:

  • 其他人也有过类似的错误但与其他包有关
  • 错误可能与错误的权限有关

我迄今为止尝试:

  • 检查的/ var/lib中/詹金斯/工作区的权限/ ExampleTask - > 结果:老板是詹金斯用户
  • 给詹金斯用户root权限(我知道这是危险的,但我只是想尝试,如果它会工作) - >结果:错误仍然存​​在
  • 允许jenkins用户使用sudo运行脚本 - >结果:nvm,npm和节点未定义;我试图手动安装NVM,NPM和节点,但有一个新的错误permission denied /root/.nvm

NPM日志文件输出如下:

0 info it worked if it ends with ok 
1 verbose cli [ '/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/NodeJS_7.10.0/bin/node', 
1 verbose cli '/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/NodeJS_7.10.0/bin/npm', 
1 verbose cli 'run', 
1 verbose cli 'test' ] 
2 info using [email protected] 
3 info using [email protected] 
4 verbose run-script [ 'pretest', 'test', 'posttest' ] 
5 info lifecycle [email protected]~pretest: [email protected] 
6 silly lifecycle [email protected]~pretest: no script for pretest, continuing 
7 info lifecycle [email protected]~test: [email protected] 
8 verbose lifecycle [email protected]~test: unsafe-perm in lifecycle true 
9 verbose lifecycle [email protected]~test: PATH: /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/NodeJS_7.10.0/lib/node_modules/npm/bin/node-gyp-bin:/var/lib/jenkins/workspace/ExampleTask/node_modules/.bin:/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/NodeJS_7.10.0/lib/node_modules/npm/bin/node-gyp-bin:/var/lib/jenkins/workspace/ExampleTask/node_modules/.bin:/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/NodeJS_7.10.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin 
10 verbose lifecycle [email protected]~test: CWD: /var/lib/jenkins/workspace/ExampleTask 
11 silly lifecycle [email protected]~test: Args: [ '-c', 'npm run lint && karma start' ] 
12 silly lifecycle [email protected]~test: Returned: code: 1 signal: null 
13 info lifecycle [email protected]~test: Failed to exec test script 
14 verbose stack Error: [email protected] test: `npm run lint && karma start` 
14 verbose stack Exit status 1 
14 verbose stack  at EventEmitter.<anonymous> (/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/NodeJS_7.10.0/lib/node_modules/npm/lib/utils/lifecycle.js:279:16) 
14 verbose stack  at emitTwo (events.js:106:13) 
14 verbose stack  at EventEmitter.emit (events.js:194:7) 
14 verbose stack  at ChildProcess.<anonymous> (/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/NodeJS_7.10.0/lib/node_modules/npm/lib/utils/spawn.js:40:14) 
14 verbose stack  at emitTwo (events.js:106:13) 
14 verbose stack  at ChildProcess.emit (events.js:194:7) 
14 verbose stack  at maybeClose (internal/child_process.js:899:16) 
14 verbose stack  at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5) 
15 verbose pkgid [email protected] 
16 verbose cwd /var/lib/jenkins/workspace/ExampleTask 
17 error Linux 4.4.0-1016-aws 
18 error argv "/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/NodeJS_7.10.0/bin/node" "/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/NodeJS_7.10.0/bin/npm" "run" "test" 
19 error node v7.10.0 
20 error npm v4.2.0 
21 error code ELIFECYCLE 
22 error errno 1 
23 error [email protected] test: `npm run lint && karma start` 
23 error Exit status 1 
24 error Failed at the [email protected] test script 'npm run lint && karma start'. 
24 error Make sure you have the latest version of node.js and npm installed. 
24 error If you do, this is most likely a problem with the example package, 
24 error not with npm itself. 
24 error Tell the author that this fails on your system: 
24 error  npm run lint && karma start 
24 error You can get information on how to open an issue for this project with: 
24 error  npm bugs example 
24 error Or if that isn't available, you can get their info via: 
24 error  npm owner ls example 
24 error There is likely additional logging output above. 
25 verbose exit [ 1, true ] 

回答

2

看起来你正在使用詹金斯节点插件,它不具备如果您可以尝试使用节点的基本安装,则提供正确的权限以执行特定的任务,为Jenkins用户提供sudo perms,然后使用“sudo命令”等命令可以为您提供帮助。

0

我正面临类似的问题,并能够通过安装Chrome来解决。请注意,您可能还必须设置CHROME_BIN环境变量。

仅供参考: 我在Docker内部运行Jenkins。 js项目安装了chromedriver作为依赖项,我将CHROME_BIN设置为chromedriver并收到了您提到的相同问题(我的堆栈跟踪如下)。希望这是一些帮助,或者至少可以帮助你移动,祝你好运。

03 01 2018 02:01:20.288:ERROR [karma]: { Error: spawn EACCES 
at exports._errnoException (util.js:1020:11) 
at ChildProcess.spawn (internal/child_process.js:328:11) 
at exports.spawn (child_process.js:370:9) 
at spawnWithoutOutput (/var/jenkins_home/jobs/oh2.0 test/workspace/node_modules/karma/lib/launchers/process.js:168:24) 
at Object.ProcessLauncher._execCommand (/var/jenkins_home/jobs/oh2.0 test/workspace/node_modules/karma/lib/launchers/process.js:76:21) 
at Object.ProcessLauncher._start (/var/jenkins_home/jobs/oh2.0 test/workspace/node_modules/karma/lib/launchers/process.js:33:10) 
at Object.<anonymous> (/var/jenkins_home/jobs/oh2.0 test/workspace/node_modules/karma/lib/launchers/process.js:19:10) 
at emitOne (events.js:101:20) 
at Object.emit (events.js:188:7) 
at Object.BaseLauncher.start (/var/jenkins_home/jobs/oh2.0 test/workspace/node_modules/karma/lib/launchers/base.js:42:10) 
at Object.j (/var/jenkins_home/jobs/oh2.0 test/workspace/node_modules/karma/lib/launcher.js:116:17) 
at Object.setTimeout.bind.j (/var/jenkins_home/jobs/oh2.0 test/workspace/node_modules/qjobs/qjobs.js:143:18) 
at ontimeout (timers.js:386:11) 
at tryOnTimeout (timers.js:250:5) 
at Timer.listOnTimeout (timers.js:214:5) code: 'EACCES', errno: 'EACCES', syscall: 'spawn' } 
相关问题