Jenkinsを安全に再起動する方法は?


19

Jenkinsを数回再起動することを含む、Jenkinsインスタンスの構成を変更する必要があります。しかし、当社の開発者は十分な頻度でコミットしているため、3日間でジョブが実行されていないJenkinsを見たことはありません。

Jenkinsを安全に再起動するネイティブな方法(GUIまたはコマンドライン経由)がありますか?IE:ダウンする前に現在のジョブが完了するのを待ち、Jenkinsが戻ったときに開始するキューに入れられたジョブを追跡します。

プラグインがあることは知っていますが、それをインストールするには、Jenkinsを再起動する必要があります...


私の頭の上から推測しますが、奴隷を無効にするオプションはありませんか?(私が覚えている限り、進行中のジョブを停止するのではなく、キュー内の追加のジョブが起動されるのを防ぎます)
Tensibai

理論的には、適切に構成されたJenkinsインスタンスでPipelineジョブを実行すると、いつでもマスターノードまたはスレーブノードを再起動できます。ただし、私の経験ではそうではありません。
-jayhendren

回答:


14

に移動する$YOUR_JENKINS_URL/updateCenter/と、次のページが表示されます。

ここで、Restart Jenkins when installation is complete and no jobs are runningどれがかなり安全であるかを確認できます。


再起動は、プラグインがインストール中の場合にのみ発生することを理解しています...プラグインをインストールせずに再起動を強制する方法はありませんか?
アレックス

1
@Alex私は自分のインスタンスでそれをテストしましたが、私にとっては、プラグインのインストールに関係なく常に動作するようです。stackoverflow.com/a/8077830による/safeRestartと、/restartエンドポイントもあるはずです。
-eyalzek

1
しかし、ジョブの実行中に再起動することについての質問ではありませんか?
ダンコルニレスク

@DanCornilescu質問の状態:IE: wait for current jobs to finish before going down, and keep track of queued jobs to start once Jenkins comes back up.、これはまさにあなたがそのボックスをチェックしたときに起こることです。
-eyalzek

質問にも述べられているように、私は尋ねていましたJenkins without jobs running in three days-これは、一部の仕事が遅れるので影響があることを意味します。それでも、仕事を失うよりはましです。
ダンコルニレスク


8

Jenkins Rest API([jenkins_url] / safeRestart)を使用してsafeRestartコマンドを実行するか、Jenkins CLIを介してコマンドを実行できます

sudo /etc/init.d/jenkins safeRestart

CLIコマンドの実行

一般的な構文は次のとおりです(設計はsvn / gitなどのツールに似ています)。

java -jar jenkins-cli.jar [-s JENKINS_URL]コマンド[オプション...] [引数...]

JENKINS_URLは、環境変数$ JENKINS_URLを介して指定できます。この環境変数は、ビルド中にJenkinsがプロセスを分岐するときに自動的に設定されます。これにより、URLを明示的に設定しなくてもビルド内からJenkins CLIを使用できます。

注:safeRestartコマンドを実行すると、再起動中に実行されるように設定されたジョブはすべてキューに入れられ、サーバーがオンラインに戻ったときに実行されます。これが再起動時に競合を引き起こさないことを確認してください!


1

これは多くの人が解決しようとしている本当の問題だと思います。プラグインのインストール時にJenkinsを再起動することが望ましい場合があります。私の経験に基づいて提供できる提案の1つは次のとおりです。

  • すべての開発者がプラグインをインストールできないように、管理モジュールへのアクセスを制限します
  • ダウンタイムについて開発者に指示し、事前に通知する
  • 必要なすべてのプラグインを一括でインストールし、Jenkinsを再起動します
  • Jenkinsの使用準備ができていることを開発者に通知する

これには、手作業と調整が必要であることを理解しています。しかし、これは私たちのプロジェクトでこれまでのところうまく機能しており、言及しても害はないと考えました。


1

Jenkinsを手動で再起動するには、次のコマンドのいずれかを使用できます(ブラウザーにURLを入力します)。

(jenkins_url)/safeRestart-実行中のすべてのジョブを完了できます。再起動が完了すると、新しいジョブはキューに残り、実行されます。

(jenkins_url)/restart -ビルドの完了を待たずに強制的に再起動します。


0

パイプラインジョブの場合、「https:// jenkins / safeRestart」にアクセスしても「jobs / builds」が完全に終了するのを待ちません。

手順が完了するのを待ってジェンキンの再起動を実行し、ジェンキンが再び表示された後にピップラインを再開するようです。


1
これは、@ Nakilonの回答へのコメントを意味していると思いますか?
ハゲロ

0

Jenkinsは再起動の影響を受けないように設計されています。私の経験から、再起動のためにビルドが失敗する可能性はありますが、まれです。

私が働いている場所では、以前はJenkinsを定期的に再起動する必要がありました。想像できるあらゆる種類の仕事があります。小さな仕事もあれば、大きな仕事もあります。一度だけ、漬物が再水和されていないビルドが失敗するのを目にしました。

その後、常に安全な再起動を行います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.