找不到Jenkins NodeJSPlugin节点命令

时间:2017-04-09 13:14:59

标签: jenkins

构建shell是:

echo $PATH
which node
ls -l /var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/node_6.10.2/bin
node -v

结果是:

/var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/node_6.10.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin
/var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/node_6.10.2/bin/node
-rwxrwxr-x 1 jenkins jenkins 30503659 Apr  4 09:01 node
lrwxrwxrwx 1 jenkins jenkins       38 Apr  9 13:09 npm -> ../lib/node_modules/npm/bin/npm-cli.js
/tmp/hudson8026342196338345661.sh: line 1: node: not found

为什么找不到节点命令?

我用docker官方jenkins图像运行它。

编辑:jenkins:2.46.1-alpine

2 个答案:

答案 0 :(得分:4)

根据issue JENKINS-34815 (NodeJS plugin unable to install global NPM packages)的建议,检查inside_k0

请参阅this comment

  

使用当前的docker jenkins:2.32.1-alpine和plugin nodejs:1.0当使用节点7.4时再次发生这种情况:
  即使在PATH中找到并且可执行,Alpine也无法运行二进制文件:

ldd -l /var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/node_6.10.2/bin/node
  

这是因为图像根据nodejs的需要不包含+ /var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodejs7/bin/node -v /var/jenkins_home/jobs/busx1/workspace@tmp/durable-a76d6fd5/script.sh: line 1: /var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodejs7/bin/node: not found

libstdc++.so.6

换句话说, /lib64/ld-linux-x86-64.so.2 (0x55ae0ad53000) libdl.so.2 => /lib64/ld-linux-x86-64.so.2 (0x55ae0ad53000) librt.so.1 => /lib64/ld-linux-x86-64.so.2 (0x55ae0ad53000) Error loading shared library libstdc++.so.6: No such file or directory (needed by /var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodejs7/bin/node) libm.so.6 => /lib64/ld-linux-x86-64.so.2 (0x55ae0ad53000) libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x7f0ac773e000) libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x55ae0ad53000) libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x55ae0ad53000) 并不意味着node: not found未安装(它是可执行的,可在node中找到)。
这意味着找不到$PATH个依赖项之一。

答案 1 :(得分:2)

我用码头图像jenkins运行Jenkins:2.60.3-alpine。

我通过输入容器然后直接安装节点来解决这个问题:

$ docker exec -u 0 -it jenkins-1 bash

bash-4.3# apk add --no-cache nodejs
bash-4.3# node --version
v6.9.5
bash-4.3# npm --version
5.6.0

最后,作业可以使用节点和npm。