在mac-os-x Yosemite上调用"npm"时,Jenkins构建步骤失败

Gab*_*oia 7 macos node.js npm jenkins vagrant

在开始之前,我想说我已经检查了这些答案:

Jenkins构建步骤失败'npm install <whatever>'

Jenkin的构建在npm install上失败了

现在,我已经处理了这个问题已经有一段时间了,因此我尝试了很多东西.

首先,我通过自制软件安装了node + npm.一种简单$ node -v$ npm -v呼应节点和V2.3版本v0.10.36.*为NPM,这也意味着我有他们在路径和他们的工作,而在终端调用.

简单地添加node -v; npm -v到Jenkins中的执行shell并没有这样做.经过一些修修补补后,我将$: which node终端中产生的内容复制到上面提到的脚本中,现在看起来像这样:/usr/local/bin/node显然是有效的.Jenkins构建成功,并且'node-v0.10.36'自豪地显示在控制台输出中.

当为'npm'做同样的事情时,恰好是/usr/local/bin/npm --version计算神,不再那么仁慈了.这次抛出一个很大的' env:node:没有这样的文件或目录 '错误,整个构建失败了.

$ /bin/sh -xe /var/folders/wr/g_dl81tn5_x0t_yz3jw602cr0000gn/T/hudson8770480548136671253.sh当我在终端中运行相同的命令时,失败的实际命令是 "令人惊讶的".

我还卸载了自制节点和npm版本,然后通过包管理器安装它们.结果相同.

最终我也这样做了:https://gist.github.com/DanHerbert/9520689,没有运气.

笔记:

  • 我正在运行Jenkins 1.613并尝试使用1.5**
  • 我没有创建一个"Jenkins"特定用户,而是我正在使用管理员.这恰好是Jenkins运行的用户,因为who am i可执行脚本中的命令会产生管理员的用户名.
  • sudo'ing没有帮助
  • 我也在虚拟环境中运行整个事情 - 流浪汉
  • 我没有把詹金斯作为一个守护者,因为它与xtools有冲突,但是作为一个简单的过程
  • 我还尝试了各种配置的jenkins-node插件(如果需要可以详细说明)

非常感谢您的帮助,如果您需要任何其他信息,屏幕截图,日志等,请告诉我们.

Gab*_*oia 18

我找到了自己的解决方案.问题是尽管在shell中可见的PATH没有为Jenkins作业导出,因此,这里找到的第一个解决方法是将它导出到实际的脚本中,如下所示:

在此输入图像描述

但这感觉就像一个黑客!

正确和优雅的解决方案是使用Jenkins EnvInject插件并在配置页面上添加的属性内容textarea中导出路径,如下所示:

在此输入图像描述

  • copy-paste-able:`PATH =/sbin:/ usr/sbin:/ usr/bin:/ usr/local/bin` (13认同)