web-dev-qa-db-ja.com

パイプラインプラグインを使用してjenkins 2.0にノードをインストールする

次の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コンテナにログインしてノードを手動でインストールします。

enter image description here

更新:

以下の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'
}
10
royse41

どちらか

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'

簡潔にするために。

22
Jesse Glick

私にとっては次のコードを動作させます:

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

nodejs5は、Jenkins構成で指定されたツールの名前です。

7

Windowsで動作するJenkinsで誰かがこの問題に偶然対処した場合。以下をせよ:

def nodeHome = tool 'Node.js 6.9.5'
bat "\"${nodeHome}\"\\node.exe -v"
bat "\"${nodeHome}\"\\npm -v"
1
Glogo