ビルドが失敗した場合にマシンをオフラインにするプラグインを認識しています。私の質問は、特定のステップが失敗した場合、マシンをオフラインにできるかということです。
各マシンを元に戻す特定の Windows バッチ ビルド前の手順を実行していて、元に戻すが失敗した場合にスレーブをオフラインにしたい
ビルドが失敗した場合にマシンをオフラインにするプラグインを認識しています。私の質問は、特定のステップが失敗した場合、マシンをオフラインにできるかということです。
各マシンを元に戻す特定の Windows バッチ ビルド前の手順を実行していて、元に戻すが失敗した場合にスレーブをオフラインにしたい
奇妙な要件ですが、私はそれを尊重します:)
Brut force - スレーブを削除したい場合は、そのスレーブで実行されているバッチ ファイルからそれを強制終了 (Java プロセスを強制終了) できます。バッチ ファイルで taskkill を使用します (使用方法を確認するには、コマンド ラインでtaskkill /?を実行します)。バッチ ファイルは、 startコマンドを使用してジョブ内でフォークする必要があります(使用方法を確認するには、コマンド ラインでstart /?を参照してください)。
また、これとこの投稿を見てください。より良いコントロールで、あなたと同様のニーズのように見えます。
お役に立てれば。
古い質問ですが、私が検討した(そして試した)いくつかの他のアプローチがあります。ビルド マシンを監視し、スレーブがオフラインになるかディスク容量が不足した場合に Pager Duty を呼び出すジョブがあります。マシンを強制的にオフラインにすることは、私たちの環境では問題があります。
スレーブを削除する (たとえば、強制終了するか、オフラインにする) 代わりに、マシンのラベルを変更して、他のジョブがそれを選択しないようにすることができます。これはgroovyで行うことができます。警告: ラベルの変更が反映されるまでに時間がかかるため、マシンがまだ選択されている可能性があります。
Conditional Build Stepプラグインを使用し、失敗した場合は groovy を使用してマシンをオフラインにします。注: この groovy はテストしていません... 古いものです。
manager.build.getBuiltOn().toComputer.setTemporarilyOffline(true)
マシンをオフラインにするのではなく、そのジョブを永久に実行することができます (スリープ、スリープ、スリープ) - オフラインにはなりませんが、他のジョブがそれを選択することはできなくなります。その間、回復を再試行し続ける可能性があります。
ダウンストリーム ジョブをアップストリーム ジョブと同じノードで実行できるNode Stalkerプラグインもあります。そうすれば、障害が発生したときに、ダウンストリーム ジョブでクリーンアップを実行できます。ただし、障害が発生したマシンに対してスケジュールされた別のジョブが最初に実行されるリスクがわずかにあります。
コマンドプロンプトからのみマシンをオフラインにしますか?それ以外の場合は、Groovyのビルド後の手順を使用して、各マシンをオフラインにする簡単なスクリプトを作成できます。コマンドプロンプトから、Power Shellユーティリティを使用しない限り、他のスレーブにアクセスすることはできません。