1. ホーム
  2. ジェンキンス

[解決済み】サーバーを再起動せずに、Jenkins上で停止できないゾンビジョブを停止する方法は?

2022-04-08 17:32:53

質問

私たちのJenkinsサーバーには、3日間稼働しているジョブがありますが、何もしていません。隅にある小さなXをクリックしても何もせず、コンソール出力のログも何も表示されません。ビルドサーバーで確認したところ、ジョブは実際にはまったく実行されていないようです。

ファイルやロックなどを編集して、jenkinsにジョブが完了したことを伝える方法はありますか?私たちは多くのジョブを持っているので、私たちは本当にサーバーを再起動したくありません。

解決方法は?

Jenkinsの管理("Manage Jenkins" > "スクリプトコンソール(")にアクセスして、サーバー上でスクリプトを実行し、ハングしているスレッドを中断してください。

ライブスレッドをすべて取得するには Thread.getAllStackTraces() で、ハングアップしているものを中断させる。

Thread.getAllStackTraces().keySet().each() {
  t -> if (t.getName()=="YOUR THREAD NAME" ) {   t.interrupt();  }
}

UPDATE

スレッドを使用した上記の解決策は、より新しいJenkinsのバージョンでは動作しない可能性があります。フリーズしたパイプラインを中断するには、以下を参照してください。 これ の解決策(by アレクサンドル・バンティク )を代わりに実行してください。

Jenkins.instance.getItemByFullName("JobName")
                .getBuildByNumber(JobNumber)
                .finish(
                        hudson.model.Result.ABORTED,
                        new java.io.IOException("Aborting build")
                );