【问题标题】:Node not found on Jenkins docker instance在 Jenkins docker 实例上找不到节点
【发布时间】:2017-11-21 06:16:30
【问题描述】:

我将 Jenkins 作为 docker 容器运行,并且已安装 NodeJS plugin 并彻底按照设置说明进行操作。当我尝试使用node 运行脚本时,出现以下错误:

/tmp/jenkins9123978873441132802.sh: line 1: node: not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE

我检查了 docker 卷,node bin 是它应该在的位置并且是可执行的,当我从我的主机服务器运行它时它工作正常:

user@server:/data/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/latest/bin$ ./node --version
v9.2.0

我修改了构建脚本以进一步探索问题:

echo $PATH

cd /var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/latest/bin
ls -all
./node --version

node --version
npm --version

看看这有多奇怪:

Building in workspace /var/jenkins_home/workspace/release
[WS-CLEANUP] Deleting project workspace...
[WS-CLEANUP] Done
Adding all registry entries
copy managed file [Main config] to file:/var/jenkins_home/workspace/release@tmp/config69012336710357692tmp
[release] $ /bin/sh -xe /tmp/jenkins6243047436861395796.sh
+ echo /var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/latest/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/latest/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
+ cd /var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/latest/bin
+ ls -all
total 34112
drwxr-xr-x 2 jenkins jenkins     4096 Nov 20 16:16 .
drwxr-xr-x 6 jenkins jenkins     4096 Nov 20 16:16 ..
-rwxrwxrwx 1 jenkins jenkins 34921762 Nov 14 20:33 node
lrwxrwxrwx 1 jenkins jenkins       38 Nov 20 16:16 npm -> ../lib/node_modules/npm/bin/npm-cli.js
lrwxrwxrwx 1 jenkins jenkins       38 Nov 20 16:16 npx -> ../lib/node_modules/npm/bin/npx-cli.js
+ ./node --version
/tmp/jenkins6243047436861395796.sh: line 1: ./node: not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE

node 可执行文件存在,并且它是可执行文件 (+x)。路径设置正确,但构建仍然失败。

【问题讨论】:

    标签: node.js docker jenkins


    【解决方案1】:

    这是因为节点二进制文件的路径

    /data/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/latest/bin

    在您的 shell 路径中不存在。

    您应该 edit Jenkins' variables 调整您的 PATH。

    【讨论】:

    • 路径中确实存在。它由 NodeJS 插件自动设置。我刚刚用正在运行的实际脚本更新了我的问题。 echo $PATH 表明路径确实是正确的。当我cd 进入node 可执行文件所在的目录时,我可以看到在执行ls -all 时它实际上就在那里。所以,./node 应该可以工作,因为我 cded 进入了正确的目录。还是不行。
    • 如果它在路径上,请尝试使用node./node,不过你说得对,这看起来确实很奇怪。
    • 是的,但由于node 指向/data/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/latest/bin/node,因此行为与cd 进入该目录并运行./node 相同。我这样做是为了确保问题不是来自$PATH
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多