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

时间:2015-05-12 00:01:30

标签: node.js macos jenkins npm vagrant

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

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,没有运气。

注意:

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

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

1 个答案:

答案 0 :(得分:16)

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

enter image description here

但这感觉就像一个黑客!

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

enter image description here