【问题标题】:NPM works on Command Line, but not in JenkinsNPM 适用于命令行,但不适用于 Jenkins
【发布时间】:2018-06-06 21:18:18
【问题描述】:

我无法让 Jenkins 使用“执行 shell”(在“构建”步骤下)中的“npm”命令。

我正在尝试设置一个新的 Jenkins 实例(前一个实例的副本)。我刚刚导入了旧作业,现在正在安装这些作业所依赖的各种服务(例如 maven、nodejs、ansible 等)。

我在设置 nodejs 和 npm 时遇到问题,尤其是设置。

当我在命令行输入命令“npm install”时,我得到以下信息:

uws@9.14.0 install /var/lib/jenkins/workspace . . .
. . . 
Binary is fine
added 1282 packages in 36.424s

当我尝试使用 Jenkins 执行 shell 运行相同的命令时,我得到以下信息:

+ npm install
/tmp/jenkins7750702649955218109.sh: line 2: npm: command not found
Build step 'Execute shell' marked build as failure

为什么我可以从命令行访问这个命令,但 Jenkins 不能?

我检查过的一些事情:

-“node”和“npm”的路径都在路径上。路径上至少有“捷径”(这在之前的 Jenkins 实例中有效)。

-node 和 npm 二进制文件拥有 root:root 所有权,但它们的安全设置(当前)为 755(或 -rwxr-xr-x)。

-我已经安装了 nodejs 插件。不确定如何使用它,但它的设置与以前的 Jenkins 实例上的设置相匹配。两个实例都使用执行 shell(相对于任何特殊的 Jenkins 工具)来运行“npm”命令,而只有旧版本可以工作。

那么,我还应该检查什么我不是? Jenkins 需要什么才能访问“npm”命令?

【问题讨论】:

  • 你能在 jenkins 可执行 shell 中运行 PATH 命令并确认其中是否存在 npm 吗??
  • 所以,这里是该测试的结果: + echo /sbin:/usr/sbin:/bin:/usr/bin /sbin:/usr/sbin:/bin:/usr/bin . . .更多内容将在以后的编辑中提供。
  • 好主意。我很尴尬,我没有考虑过这个测试。因此,这里是该测试的结果: + echo /sbin:/usr/sbin:/bin:/usr/bin /sbin:/usr/sbin:/bin:/usr/bin 这与命令行不同:/ usr/local/src/apache-maven/bin:/usr/local/sbin: /usr/local/bin:/usr/sbin:/usr/bin:/root/bin 检查/usr/local/bin的内容,我看到“node”可执行文件和“npm”可执行文件的快捷方式。在 Jenkins 生成的版本中看不到可执行文件,但可能需要仔细检查。知道为什么会存在这种差异吗?

标签: angularjs jenkins npm


【解决方案1】:

在 Jenkins 中尝试以下选项

选项 1:

选项 2:

【讨论】:

  • 好东西!选项 2 对我有用,但我不得不通过将二进制文件从路径中移除来稍微改变它:“export PATH=$PATH:/usr/local/bin” 选项 1 解决了眼前的问题,但后来我遇到了“line 3: ng: command not found”,所以我可能需要了解更多关于如何配置 NodeJS 插件的信息。
  • Option2 为我工作。在公司防火墙后面添加 npm config 命令以在 npm 安装之前设置注册表和 http-proxy。
猜你喜欢
  • 2011-03-28
  • 2016-07-17
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-02
  • 2020-01-13
相关资源
最近更新 更多