2015年7月13日月曜日

[Jenkins] ビルドが失敗したときにスレーブをオフラインにする


Offline Node On Failure Plugin を使う
Offline Node On Failure Plugin
その名の通り、ビルドが失敗したらオフラインにするプラグインです。

インストールすると、ビルド後の処理に「Take node offline on failure」が追加されます。
細かい設定などは一切ありません。失敗したらオフラインにします。(master は除く)



失敗かつ特定のログがある/ない場合にオフラインにしたい
さて、Offline Node On Failure Plugin は単純に失敗したらオフラインにするプラグインでした。
ただ、同じ失敗でもオフラインにしたいときもあれば、したくないときもあるでしょう。
その場合は、オフラインにしたくないときはビルドステータスを不安定にすることで実現できます。
それも1つの手です。

しかし、それで終わってはつまらないので、別の方法を紹介します。

Groovy Postbuild Plugin でオフラインにする
Groovy Postbuild Plugin を使います。

オフラインの仕方は以下のようにします。
def com = manager.build.getBuiltOn().toComputer()
  if( com.isOnline() ) {
    com.setTemporarilyOffline(true, new OfflineCause.ByCLI("オフラインメッセージ"))
  }

さらに、特定のログが含まれているかどうかは、
manager.logContains で調べられるので、

if( manager.logContains("致命的な失敗") ) {
    def com = manager.build.getBuiltOn().toComputer()
    if( com.isOnline() ) {
      com.setTemporarilyOffline(true, new OfflineCause.ByCLI("オフラインメッセージ"))
    }
  }

のようにすれば、特定のログ出力に応じてオフラインにできます。


まとめ
プラグインを使えば簡単に実現可能ですが、Groovy を使った方法も覚えておくとより柔軟に制御ができるようになると思います。Groovy Postbuild Plugin で使える Groovy Script を github に上げてますので参考にしてください。(あんまり整理・メンテしてませんが…)
https://github.com/srz-zumix/jgpbc

0 件のコメント:

コメントを投稿