繁体   English   中英

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

[英]Jenkins build step fails when calling "npm" on mac-os-x Yosemite

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

Jenkins 构建步骤在“npm install <whatever>”上失败

Jenkins 在 npm install 上的构建失败

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

首先,我通过自制软件安装了 node + npm。 一个简单的$ node -v$ npm -v呼应了 node 的 v0.10.36 版本和 npm 的 v2.3.* 版本,这也意味着我有它们在路径中,它们在终端中调用时工作。

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

当对恰好是/usr/local/bin/npm --version的“npm”做同样的事情时,计算之神不再那么仁慈了。 这次抛出了一个很大的 ' env: node: No such file or directory ' 错误,整个构建失败了。

失败的实际命令是$ /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 没有帮助
  • 我也在虚拟环境中运行整个事情 - vagrant
  • 我没有将 Jenkins 作为守护进程运行,因为它与 xtools 冲突,而是作为一个简单的过程
  • 我还尝试了带有各种配置的 jenkins-node 插件(如果需要可以详细说明)

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

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

在此处输入图像描述

但这感觉就像一个黑客!

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

在此处输入图像描述

管理 Jenkins -> 配置系统 -> 全局属性 -> 环境变量

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM