在这个 linux 服务器上,我有一个名为“myuser”的用户。对于这个用户,在回显路径时,我得到了这个:
/home/myuser/bin:/home/myuser/.local/bin:/home/myuser/.nvm/versions/node/v6.11.1/bin:/usr/local/sbin:/usr/local/bin:/ usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
有一个节点应用程序,手动部署时我运行:
npm i
它有效。
现在,我安装了 Jenkins。我要安装的 Jenkins 项目位于:
/var/lib/jenkins/workspace/test
构建正在执行一个 shell 脚本。在那个窗口中,我输入了:
#!/bin/bash
npm i
使用 Jenkins 构建时,我得到以下信息:
[test] $ /bin/bash /tmp/jenkins756533162549346948.sh
/tmp/jenkins756533162549346948.sh: line 3: npm: command not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE
如果我只写:
echo $PATH
在 Jenkins 外壳中,我得到了这个:
[test] $ /bin/sh -xe /tmp/jenkins5067097808572366507.sh
+ echo /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin
[test] $ /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/6.11.1/bin/node /tmp/jenkins8733250738704177758.js
Finished: SUCCESS
如您所见,我安装了 nodejs 插件。无论如何,在使用 Jenkins shell 时,找不到 npm 甚至节点。如何让 Jenkins 知道 npm/node 在哪里?我试图先在 shell 中写这个:
$PATH=/home/myuser/.nvm/versions/node/v6.11.1/bin
但仍然没有运气。
原文由 oderfla 发布,翻译遵循 CC BY-SA 4.0 许可协议
我已经为此奋斗了一段时间。终于找到了解决办法。从你的工作菜单中选择
Configure
在Build Environment
选择Provide Node & npm bin/ folder to PATH
你可以保留默认设置,你很高兴。正如 Eric Wang 在评论中指定的那样,需要先安装
NodeJS Plugin
才能出现此选项: https ://wiki.jenkins.io/display/JENKINS/NodeJS+Plugin