私たちの Jenkins サーバーには、3 日間実行されているジョブがありますが、何もしていません。隅にある小さな X をクリックしても何も起こらず、コンソール出力ログにも何も表示されません。ビルド サーバーを確認しましたが、実際にはジョブがまったく実行されていないようです。
ファイルやロックなどを編集して、ジョブが「完了」したことをジェンキンスに伝える方法はありますか? 多くのジョブがあるため、サーバーを再起動する必要はありません。
私たちの Jenkins サーバーには、3 日間実行されているジョブがありますが、何もしていません。隅にある小さな X をクリックしても何も起こらず、コンソール出力ログにも何も表示されません。ビルド サーバーを確認しましたが、実際にはジョブがまったく実行されていないようです。
ファイルやロックなどを編集して、ジョブが「完了」したことをジェンキンスに伝える方法はありますか? 多くのジョブがあるため、サーバーを再起動する必要はありません。
"Manage Jenkins" > "Script Console" に移動して、サーバー上でスクリプトを実行し、ハングしているスレッドを中断します。
すべてのライブ スレッドを取得し、Thread.getAllStackTraces()
ハングしているスレッドを中断できます。
Thread.getAllStackTraces().keySet().each() {
t -> if (t.getName()=="YOUR THREAD NAME" ) { t.interrupt(); }
}
アップデート:
スレッドを使用した上記のソリューションは、最近の Jenkins バージョンでは機能しない可能性があります。フリーズしたパイプラインを中断するには、代わりにこのソリューション ( by alexandru-bantiuc ) を参照して実行します。
Jenkins.instance.getItemByFullName("JobName")
.getBuildByNumber(JobNumber)
.finish(
hudson.model.Result.ABORTED,
new java.io.IOException("Aborting build")
);
最初に提案された解決策はかなり近いものです。interrupt() の代わりに stop() を使用すると、groovy システム スクリプトで際限なく実行されるランナウェイ スレッドを強制終了します。これにより、ジョブで実行されるすべてのビルドが強制終了されます。コードは次のとおりです。
Thread.getAllStackTraces().keySet().each() {
if (it.name.contains('YOUR JOBNAME')) {
println "Stopping $it.name"
it.stop()
}
}
このタスクにはモニタリング プラグインを使用します。プラグインのインストール後
ハングしているジョブ名を検索します
スレッドの名前は次のように始まります
Executor #2 for master : executing <your-job-name> #<build-number>
希望するジョブの行の表の一番右にある赤い丸いボタンをクリックします。
答えるには遅すぎると思いますが、私の助けは何人かの人々です。
申し訳ありませんが、画像を投稿するのに十分な評判がありません。
それが役立つことを願っています
ビルドタイムアウトプラグインは、このような場合に便利です。時間がかかりすぎると、ジョブは自動的に強制終了されます。
Jenkins のソースを見てきましたが、スレッド割り込みを介してジョブを停止しているように見えるため、私がやろうとしていることは不可能のようです。なぜ仕事がぶら下がっているのか分かりません..
編集:
止められない仕事の考えられる理由:
私は通常、そのような場合に jenkins-cli を使用します。jar は ページ からダウンロードできますhttp://your-jenkins-host:PORT/cli
。次に実行します
java -jar jenkins-cli.jar delete-builds name_of_job_to_delete hanging_job_number
補助情報:
のようなさまざまなビルドを渡すこともできます350:400
。実行すると利用できる一般的なヘルプ
java -jar jenkins-cli.jar help
delete-builds
byのコンテキスト コマンド ヘルプ
java -jar jenkins-cli.jar delete-builds
これらの解決策はどれもうまくいきませんでした。サーバーがインストールされているマシンを再起動する必要がありました。殺せない仕事はなくなりました。