使用管道插件在jenkins 2.0上安装节点

roy*_*e41 10 groovy node.js jenkins-pipeline jenkins-2

我正在运行以下jenkinsci/jenkins:2.0-rc-1docker 镜像来试用jenkins 2.0和"管道"视图.

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

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

运行时的响应是:

[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
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

  • 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'
}
Run Code Online (Sandbox Code Playgroud)

Jes*_*ick 22

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

要么

node {
  def nodeHome = tool name: 'node-5.10.1', type: 'jenkins.plugins.nodejs.tools.NodeJSInstallation'
  sh "${nodeHome}/bin/node -v"
}
Run Code Online (Sandbox Code Playgroud)

应该管用.有关更多建议,请参见JENKINS-28718.

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

tool 'node-5.10.1'
Run Code Online (Sandbox Code Playgroud)

为了简洁起见.


小智 7

为我工作下一个代码:

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

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