在开始之前,我想说我已经检查了这些答案:
Jenkins build step fails on 'npm install <whatever>'
Jenkin's build failing on npm install
现在,我已经暂时解决了这个问题,因此我尝试了很多东西。
首先,我通过自制软件安装了node + npm。一个简单的$ node -v
和$ npm -v
回显了节点的版本v0.10.36和用于npm的v2.3。*,这也意味着我在路径中有它们并且它们在终端中被调用时工作。
只需将node -v; npm -v
添加到Jenkins中的 执行shell ,就不会这样做。经过一些修改后,我将终端中产生的$: which node
复制到上面提到的脚本中,现在看起来像这样:/usr/local/bin/node
显然有效。 Jenkins构建成功,节点-v0.10.36&#39;自豪地显示在 控制台输出 中。
为&#39; npm&#39;做同样的事情碰巧是/usr/local/bin/npm --version
计算之神已经不再那么仁慈了。一个很大的 env:节点:没有这样的文件或目录&#39;这次抛出了错误,整个构建都失败了。
失败的实际命令是
$ /bin/sh -xe /var/folders/wr/g_dl81tn5_x0t_yz3jw602cr0000gn/T/hudson8770480548136671253.sh
和&#34;令人惊讶的是#34;当我在终端中运行相同的命令时它会成功。
我还卸载了自制节点&amp; npm版本,然后通过包管理器安装它们。相同的结果。
最终我也这样做了:https://gist.github.com/DanHerbert/9520689,没有运气。
注意:
who am i
命令会生成管理员的用户名。 非常感谢您的帮助,如果您需要任何其他信息,屏幕截图,日志等,请与我们联系。
答案 0 :(得分:16)
我找到了自己的解决方案。问题是尽管在shell中可见的PATH没有为Jenkins作业导出,因此,这里的第一个解决方法是将其导出到实际脚本中,如下所示:
但这感觉就像一个黑客!
正确而优雅的解决方案是使用Jenkins EnvInject Plugin并在配置页面上添加的属性内容textarea中导出路径,如下所示: