2014年4月14日月曜日

[Jenkins] アップグレードのスケジューリング

Jenkins の管理者の方々は Jenkins 自体のアップグレードやプラグインのアップグレードなど、メンテナンス業務があると思います。
それを少し楽にしたって話です。少しです、少し。

何をしたかというと、「Jenkins を SafeRestart させるジョブ」を作っただけです。
SafeRestart は実行(ビルド)中のジョブがなければ、Jenkins を再起動させる機能です。

どう楽になったか
アップグレードをする場合、Jenkins を止める必要があります。この作業はできるだけ開発メンバーが作業中でない方が良いです。そうなると、アップグレードは夜中とか休日とかなることが多いと思います。
また、大きいプロジェクトや1ビルドがなが~いテストを持つ Jenkins の場合、止めるのにも時間がかかったりします。(強制中断という手もありますが・・・)

それだと、管理者は大変ですよね?

今回、「Jenkins を SafeRestart させるジョブ」を作ったことで、「SafeRestart のスケジューリング」ができるようになり、Jenkins の再起動を予約できるようになりました。
つまり、金曜に Jenkins の更新をダウンロード&インストールしておき(再起動はしてないので、アップグレード自体は未完)、開発メンバーがいない土曜深夜に SafeRestart を仕掛けておけば、日曜日には再起動がかかって無事アップグレードが完了。
そして月曜日にはいつもどおり CI が回せるというわけです。

これで管理者である私は休日出勤しなくて済むようになりました。
SafeRestart させるジョブの作り方
いろいろ方法があると思います。
SafeRestart 自体は、Jenkins の URL + /safeRestart(http://~/safeRestart)を開くだけでもできますし、SafeRestart Plugin ってのもあります。

今回は、みんな大好き Groovy postbuild Plugin を使った方法を紹介します。

1. プロジェクトを作る
2. 「ビルド後の処理の追加」から「Groovy Postbuild」を追加
3. 以下のスクリプトを入力
def jenkins = hudson.model.Hudson.instance
jenkins.doSafeRestart()
4. ビルド・トリガに再起動させたい日時を設定する(ビルド中であることも考慮して早めに設定しておくといいかも)

設定は以上です。これで Jenkins の管理が楽になりますね。

※ Windows の場合、サービスで実行してないとダメなようです。(その他の OS は確認してません)

0 件のコメント:

コメントを投稿