Developer's Blog

Jenkins にすべてのプラグインを入れたらどうなるか

こんにちは、開発担当の松本です。

継続的インテグレーションサーバの Jenkins の 400 以上のプラグインを全部入れてみたらどうなるのかを調べてみました。

なお、クリックで開く画像はサイズが大きいのでモバイル環境で開くと危ないかもしれません。サーバにも優しくないのでなるべく画像をクリックしないようお願いします。

最近、 WEB+DB PRESS Vol.67 に開発者である川口さんの記事があったり、カエル本が翻訳されたり、先週は楽天で勉強会があったりと、Jenkins はいろいろ話題になっていますね。

Jenkins を使っていて便利だと感じるのは豊富なプラグインでいろいろ拡張できて、それが設定ページから簡単にインストールできること。よさげなプラグインを手当たり次第インストールしてみたりした結果、社内の Jenkins サーバには約 40 個のプラグインが入っています。

Jenkins では、プラグインを入れると管理ページやプロジェクトの設定ページにそのプラグインの設定が追加されます。40 個入れた時点でも設定が結構増えますので、全部入れるとどうなるかがちょっと気になったので試してみます。

早速 Jenkins のプラグインマネージャページへ行きます。Jenkins のインストール直後には既に 7 個のプラグインが入っています。ここから利用可能タブをクリックして全部のプラグインにチェックを入れていきます。

(画像サイズ: 789 x 32325, 1メガバイト)

このページはカテゴリ別で同じプラグインが重複表示されていたりしますが、何も考えずにすべてのチェックボックスにひたすらチェックを入れていくほうが楽です。10 分くらいで終わります。

チェック作業が終わったら「ダウンロードして再起動後にインストール」をクリックします。かなり長いこと待ってからダウンロードが開始して、ひとつずつプラグインがダウンロードされていきます。全て完了したら Jenkins を再起動しましょう。

(画像サイズ: 789 x 14169, 220キロバイト)

これで動作すればよいのですが、手元の環境ではいくつかの問題で動作しませんでした。

ひとつめの問題は、メモリ不足による Jenkins 起動時エラーです (これは jenkins.err で確認することができます。)。

これに対処するには、jenkins.xml で Java VMのメモリ量を

    <arguments>-Xrs -Xmx256m (後略)</arguments>

から

    <arguments>-Xrs -Xmx1024m -XX:MaxPermSize=256m (後略)</arguments>

に変更します。

なお、MaxPermSize は世代別 GC の permanent 世代のサイズの指定のようです (デフォルトは 32MB、サーバは 64MB)。

ふたつめの問題はプラグインのエラーです。Jenkins の管理ページで「ロード中」が表示されたままになったりするのはこのケースです。これが発生する原因は大きく分けて 2 種類あり、ひとつはプラグイン自体の JavaVM 内でのエラーによるもの、もうひとつはプラグイン内の JavaScript のエラーによるものです。

前者についてはプラグイン自体が古かったり、インストールしてから設定が必要であったりする可能性が考えられますので、今回は Jenkins のシステムログを開いて plugin なんかで検索し、問題のあるプラグインは削除するようにしました。

後者はプラグイン自体が古かったり、インストールしてから設定が必要であったりするのに加えて、ブラウザ環境にも左右されますので、今回はエラーコンソールやスクリプトデバッガを利用したりしてエラーの出るプラグインは削除するようにしました。

と、結構簡単に書いていますが、Jenkins 起動 (これが結構時間がかかる) → エラー → Jenkins 停止 → ログなどをチェック → 不要なプラグイン削除 → Jenkins 起動、という手順をエラーが出なくなるまで繰り返す必要があり、かなり面倒です。

上記手順を繰り返して十数個のプラグインを削除した結果、どうにか設定ページがエラーなく表示するようになりました。この時点で 487 個インストールされています。

このときのプロジェクトの設定ページを、Jenkins インストール直後のものと比較してみましょう。縮小サイズはどちらも 1/8 です。

まずは Jenkins インストール直後。

次はプラグイン 487 個。(画像サイズ: 1210 x 8067, 210キロバイト)

長さにして約 10 倍になりましたが、ツールバーで IE の画面を埋めるのに比べるといまいちおもしろみに欠けますね。

続いて Jenkins の管理ページの比較です。

こちらはJenkins インストール直後。

プラグイン 487 個のときの画像は長すぎなので縮小画像は省略します。赤い帽子を被った髭オヤジがいるのが気になります。

実サイズ画像
(画像サイズ: 1179 x 17701, 493キロバイト)。

なお、この状態で簡単なフリープロジェクトを作成して実行させましたが、利用していないプラグインの NullPointerException で落ちたりして、実用にはまだまだ先は長そうです。また、プロジェクト設定などのページが非常に待たされるようになるので常用にはつらいです。

というわけで、軽く安定に動作させようとすればプラグインは必要なものだけ残せというしごく当たり前の結果になりました。ただ、今回のことを通じて便利なプラグインはまだ一杯ありそうな気がしてきましたので、今後もプラグイン探しを続けたいと思います。皆さんもお勧めのプラグインがあれば教えてください!

ちなみに、これらの画像は SnapCrab for Windows にてキャプチャしました。ページ内の内容を楽に PNG 形式で保存できるのでオススメです。

ソーシャルアカウント


フェンリルのオフィシャル Twitter アカウントでは、フェンリルプロダクトの最新情報などをつぶやいています。よろしければフォローしてください!

Copyright © 2019 Fenrir Inc. All rights reserved.