10

我正在运行以下 docker 映像jenkinsci/jenkins:2.0-rc-1来试用 jenkins 2.0 和“管道”视图。

我似乎无法安装节点。这是我的管道脚本:

node {
    //tool([name: 'node-5.10.1', type: 'jenkins.plugins.nodejs.tools.NodeJSInstallation'])
    sh 'echo $(whoami)'
    sh 'node -v'
}

运行时的响应是:

[ci] Running shell script
+ whoami
+ echo jenkins
jenkins
[Pipeline] sh
[ci] Running shell script
+ node -v
/../durable-3b0b1b07/script.sh: 2: /../durable-3b0b1b07/script.sh: node: not found

这是我尝试过的:

  • jenkins NodeJS 工具(与自由式作业一起使用时可以正常工作)

  • 对于同一用户,登录到 docker 容器并手动安装节点:

在此处输入图像描述

更新:

基于下面 Jesse Glick 的回答,我将结果添加到我的脚本中PATH

node { 
    def nodeHome = tool name: 'node-5.10.1', type: 'jenkins.plugins.nodejs.tools.NodeJSInstallation'
    env.PATH = "${nodeHome}/bin:${env.PATH}"
    sh 'npm install'
}
4

3 回答 3

22

任何一个

node {
  withEnv(["PATH+NODE=${tool name: 'node-5.10.1', type: 'jenkins.plugins.nodejs.tools.NodeJSInstallation'}/bin"]) {
    sh 'node -v'
  }
}

或者

node {
  def nodeHome = tool name: 'node-5.10.1', type: 'jenkins.plugins.nodejs.tools.NodeJSInstallation'
  sh "${nodeHome}/bin/node -v"
}

应该管用。有关进一步的建议,请参阅JENKINS-28718

顺便说一句,您可以省略type参数而只使用

tool 'node-5.10.1'

为简洁起见。

于 2016-04-12T17:40:56.050 回答
7

对我来说下一个代码:

node(){
  def nodeHome = tool 'nodejs5'
  env.PATH="${env.PATH}:${nodeHome}/bin"
  ...
  sh 'npm install'
}

nodejs5 是 Jenkins 配置中指定的工具的名称。

于 2016-04-12T15:30:23.743 回答
1

如果有人碰巧在 Windows 上运行的 Jenkins 上处理这个问题。请执行下列操作:

def nodeHome = tool 'Node.js 6.9.5'
bat "\"${nodeHome}\"\\node.exe -v"
bat "\"${nodeHome}\"\\npm -v"
于 2017-05-04T15:09:59.283 回答