[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
Jenkins のパイプラインで次のようにする。
def hiyoErrorReturner(str) { if(str.equals("hiyo")) { error "ひよだー"; } else { echo "${str}だったー" } } node { hiyoErrorReturner("hitsu"); hiyoErrorReturner("hiyo"); }
すると以下のように Error で止まる。
hitsuだったー ERROR: ひよだー Finished: FAILURE
Error に来たら処理が止まる、というのは自然な動きなのだが時に途中で失敗しようがどうしようが処理を回しきってほしい、ということもある。例えば、多数のリソースに対して処理を実施する場合にそう思うことがあるのではないか。どれに失敗したのかをレポーティングしたうえで処理を継続してほしい、と。そのような場合は try-catch が使える。
def hiyoErrorReturner(str) { if(str.equals("hiyo")) { error "ひよだー"; } else { echo "${str}だったー" } } node { def list = ["hitsu", "hiyo", "neko"]; list.each{word-> try { hiyoErrorReturner(word); } catch(thrownObject) { echo "${word}の処理に失敗したっぽいー"; } }; }
このように書くと次のような結果となる。
hitsuだったー hiyoの処理に失敗したっぽいー nekoだったー
Groovy を普段から書いている人には当然なのかもしれないが、pipeline で使っていてうーんってなったのでメモメモ。
なお、こんな風にも使える。
def executeCommand(command) { sh command; } node { def list = ["ls", "pwd", "unknownCommand"]; list.each{command-> try { executeCommand(command); } catch(Error) { echo "${command}が実行できなかったよ"; } }; }
すると次のようになる。
+ ls + pwd /var/lib/jenkins/workspace/jobName + unknownCommand /var/lib/jenkins/workspace/jobName@tmp/durable-bd3798d3/script.sh: 1: /var/lib/jenkins/workspace/jobName@tmp/durable-bd3798d3/script.sh: unknownCommand: not found unknownCommandが実行できなかったよ
sh
で実行したコマンドが失敗しても Error を投げてくれるのでそれをキャッチしてハンドルできる。なので大量のリクエストを送信する際なんかにも使えそうだ。
ただいまコメントを受けつけておりません。