JenkinsのPipelineでoutput.txtが存在しなくてエラーになる

JenkinsのPipelineでoutput.txtが存在しなくてエラーになる

新しく構築したJenkinsで2日以上終了しないJOBがあり、ログを確認すると以下のようなエラーが出ていてJOBが動き続けていました。異常終了もしません。

Cannot contact : java.io.FileNotFoundException: /var/lib/jenkins/workspace/My-BuildJOBName@tmp/durable-ed8766d4/output.txt (No such file or directory)

調べていくと、「Pipeline」を使うJenkinsだと、システム設定のグローバルプロパティに環境変数としてPATHを追加するとPipelineのJOBが動かなくなるという問題があるようです。
https://stackoverflow.com/questions/43987005/jenkins-does-not-recognize-command-sh/48634476#48634476

なので、PATH+EXTRAというキーで設定を作成する必要がある。とのことでした。

PATHとして、/usr/local/binが必要な場合
×  PATH=/usr/local/bin
〇 PATH+EXTRA=/usr/local/bin

※フリースタイルJOBでPATHを使っている場合、PATH+EXTRAにすると今度はうまく動かなくなるので、その場合環境変数から、PATHは削除せず、Pipeline内に以下の定義を入れる必要があります。stackoverflowから引用

pipeline {
  agent {
    label 'master'
  }

  stages {
    stage ('STAGE NAME') {
      steps {
        withEnv(['PATH+EXTRA=/usr/sbin:/usr/bin:/sbin:/bin']) {  
          sh '''
            //code block
          '''
        }
      }
    }

調べる途中に、プラグインにバグがあるからアップデートする必要がある。などいろいろな情報にあたりましたが、今回の場合は上記対応が必要なようでした。

Pipelineを使ったJenkinsでは、このパターン結構ハマりやすそうだなと思いました。
今後、不用意にPATH環境変数を追加しないように気をつけなければ…