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環境変数を追加しないように気をつけなければ…
-
前の記事
MQL5に手を出してみた 2021.07.20
-
次の記事
Windows10 ProからWindows11 Proにアップグレードする 2021.10.20
Author:KMMR 投稿一覧
技術屋さんです。
普段はPHP, Perl, Ruby, Pythonなどを触っています。
AWSなどのIaaSもちょこちょこ触っているので、備忘などを書いていきます。