【问题标题】:How to solve Error: spawn EACCES on Jenkins when running Karma?如何解决错误:运行 Karma 时在 Jenkins 上生成 EACCES?
【发布时间】:2017-10-05 14:03:18
【问题描述】:

我已经设置了一个 AWS Codepipeline。

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

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

Jenkins 服务在 Ubuntu 16.04 上运行。

Karma 使用 Headless Chrome 进行测试。

问题是我目前在 Jenkins 上运行测试时遇到以下错误:

[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/jenkins/workspace/ExampleTask 的权限 -> 结果:所有者是詹金斯用户
  • 给jenkins用户root权限(我知道这很危险,但我只是想试试它是否可行)->结果:错误仍然存​​在
  • 允许 jenkins 用户使用 sudo 运行脚本 -> 结果:未定义 nvm、npm 和节点;我尝试手动安装 nvm、npm 和 node,但出现新错误 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 npm@4.2.0
3 info using node@v7.10.0
4 verbose run-script [ 'pretest', 'test', 'posttest' ]
5 info lifecycle  example@0.0.1~pretest:  example@0.0.1
6 silly lifecycle  example@0.0.1~pretest: no script for pretest, continuing
7 info lifecycle  example@0.0.1~test:  example@0.0.1
8 verbose lifecycle  example@0.0.1~test: unsafe-perm in lifecycle true
9 verbose lifecycle  example@0.0.1~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  example@0.0.1~test: CWD: /var/lib/jenkins/workspace/ExampleTask
11 silly lifecycle  example@0.0.1~test: Args: [ '-c', 'npm run lint && karma start' ]
12 silly lifecycle  example@0.0.1~test: Returned: code: 1  signal: null
13 info lifecycle  example@0.0.1~test: Failed to exec test script
14 verbose stack Error:  example@0.0.1 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  example@0.0.1
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  example@0.0.1 test: `npm run lint && karma start`
23 error Exit status 1
24 error Failed at the  example@0.0.1 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 ]

【问题讨论】:

    标签: node.js jenkins permissions karma-runner ubuntu-16.04


    【解决方案1】:

    Jenkins 节点插件没有执行特定任务的正确权限。通过node的base安装给Jenkins用户sudo权限,然后使用命令“sudo command”。

    【讨论】:

      【解决方案2】:

      我遇到了类似的问题,并且能够通过安装 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' }
      

      【讨论】:

        猜你喜欢
        • 2020-09-12
        • 1970-01-01
        • 2022-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多