Jenkinsプラグイン探訪 - List View column plugins
はじめに
Jenkins Advent Calender 2011 16日目担当の id:tyuki39(@tyuki39) です。
小ネタを物量でカバーする形になって恐縮ですが、よろしくお願いします。
なお、前の日は id:ssogabe さんの「Karotzさんといっしょ」でした。
ビューにカラムを追加しよう!
皆さん、Jenkinsのビューを活用しているでしょうか?
デフォルトの【すべて】ビューだけを使っている、なんてことはないですよね?
Jenkinsのトップページにアクセスしたとき、または、マイビューにアクセスしたときに、
・ 自分自身が関わっているジョブの状態がさっと一覧され、
・ 設定画面がさっと開けたり、
・ 失敗の原因を探るべく失敗ビルドのコンソールがさっと開けたり
すると便利です。
Jenkinsのプラグインの中には、そんなニーズに応えてくれて、ビューをもっと使いやすくしてくれるリストビューカラムプラグインが存在します。
リストビューカラムを紹介する前に
ビューのカスタマイズについて
Jenkins実践入門のP281「11.4 ビューをカスタマイズする」を参照すると良いでしょう。
デフォルトビューの変更について
Jenkinsのデフォルトビューは、【すべて】ですが、次の方法でデフォルトビューを変更することができます。
【すべて】ビューは、カラムを増減できませんが、追加したビューは、カラムを増減できます。デフォルトビューを追加したビューに変更することで、以降で紹介するリストビューカラムプラグイン達を効果的に配置できます。
カラムの並び替えについて
ビューの変更画面では、 id:suzukima さんの「ビルド処理の順序はドラッグ&ドロップで変更できます」と同じ要領で、カラムの並び順を変更できます。
プラグインの紹介
Built-on Columnプラグイン
ビュー上に、最新ビルドを実行したノードを表示することができます。
環境の整備不足が原因で、ビルドが失敗することもあります。ビルドを実行したノードが一目で分かると、すぐに調査に取りかかれます。
Compact Columnsプラグイン
ビューにカラムを追加していくと、ビューの横幅が長くなりがちです。
このプラグインを使用すると、「ジョブに関する情報」や「最新ビルドや最新に関する情報」をツールチップで確認できるようにして、カラムの表示内容を簡素化することができます。
Console Columnプラグイン
ビュー上に、次のショートカットボタンを追加することができます。
- 最新ビルドのコンソール
- 最新の成功ビルドのコンソール
- 最新の失敗ビルドのコンソール
- 最新の安定ビルドのコンソール
- 最新の不安定ビルドのコンソール
- 最新の不成功ビルドのコンソール
ビュー上に、すべてのボタンを配置する必要はありません。「最新ビルドのコンソール」と「最新の失敗ビルドのコンソール」の2つを配置するだけでも十分便利になるのではないかと思います。
Cron Columnプラグイン
ビュー上に、ジョブに設定されたビルドトリガを表示することができます。
定期的に実行するジョブが多い場合に役立つと思います。ただし、ビルドトリガの設定値よりも、次の実行時刻の方が気になるのではないかと思います。
その場合は、後述のNext Executionsを使用して下さい。
Description Columnプラグイン
ビュー上に、ジョブの説明を表示することができます。
このプラグインの機能は、Extra Columnsに完全に取り込まれているので、説明を割愛します。
Extra Columnsによって追加される他の機能が不要な場合のみ採用して下さい。
Extra Columnsプラグイン
ビュー上に、次のショートカットボタンと情報の表示機能を追加することができます。
- ジョブの設定
- ジョブの有効化/無効化
- ジョブの説明
- テスト結果
運用し始めのジョブは、設定を見直す機会が多いので、ビュー上に「ジョブの設定」ボタンが置かれていると便利です。
また、ジョブの概要は、ジョブ名からではなく、ジョブの説明から判断した方が分かりやすいので、ビュー上に「ジョブの説明」を表示しておくとメンテナンスしやすくなると思います。
「ジョブの説明」では、<br/>までを1行とカウントして、指定した行数分の説明のみを表示することもできます。この設定値に基づいて「ジョブの説明」の記述ルールを決めておけば、ビューが煩雑になることを避けられます。
Job Type Columnプラグイン
ここで、ジョブタイプとは、Freestyle(フリースタイル・プロジェクト), Maven(Maven2/3プロジェクト), Matrix(マルチ構成プロジェクト), External(外部ジョブの監視)のことを指します。
様々なタイプのジョブを作成している場合に、役立つかと思います。
Next Executionsプラグイン
ビュー上に、ビルドの実行予定時刻を表示することができます。
また、サイドバーにも実行予定のビルド情報を表示することができます。
15分に一回実行と設定したつもりが、毎時15分に実行という設定になっているかも知れません。実行予定時刻を表示しておくことで、このような誤りに気づきやすくなります。
Last Success Version Columnプラグイン
ビュー上に、最新の成功ビルドのバージョンを表示することができます。
標準機能の「最新の成功ビルド」を、YYYY/MM/DD hh:mm:ss(ビルド番号)形式で表示するだけで、機能としては重複しているので、このプラグインを使用する必要はないと思います。
また、このプラグインは後述するビルド名に対応していないので注意して下さい。
Last Failure Version Columnプラグイン
ビュー上に、最新の失敗ビルドのバージョンを表示することができます。
標準機能の「最新の失敗ビルド」を、YYYY/MM/DD hh:mm:ss(ビルド番号)形式で表示するだけで、機能としては重複しているので、このプラグインを使用する必要はないと思います。
また、このプラグインは後述するビルド名に対応していないので注意して下さい。
Last Success Description Columnプラグイン
ビュー上に、最新の成功ビルドの説明を表示することができます。
成功ビルドのログの中に、成功ビルドの特徴(例えば、モジュール名やモジュールのバージョンなど)を表す文字列が現れる場合に役立ちます。
このような場合、後述のDescription Setterを使用してログから文字列を抽出し、その文字列を利用してビルドの説明を自動設定します。
これで、「最新の成功ビルドの説明」に成功ビルドの特徴が表示されるようになります。
Progress Bar Columnプラグイン
役立つ場面が思いつきませんが、Jenkinsと各ノードが頑張ってくれているなという雰囲気を、より強く味わうことができそうです。
Build Name Setterプラグイン と Description Setterプラグイン
下図は、あるビルドに「ビルド名」と「ビルドの説明」を設定した状態を表しています。
Build Name Setterを使うと、ビルド名を#n以外の形式に自動設定できるようになります。
Description Setterを使うと、ビルドログの中に現れる文字列を使用して、ビルドの説明を自動設定できるようになります。
Project Description Setterプラグイン
下図は、あるジョブに「ジョブの説明」を設定した状態を表しています。
Project Description Setterを使うと、ワークスペース内のファイルを読み込んで、ジョブの説明を自動設定できるようになります。
例えば、ジョブごとにREADMEファイルを作成する決まりにしておくと、次のメリットが得られます。
- READMEの内容は、ビルドする度に読み込まれるので、ビルドの説明をREADMEに沿った最新の状態に保つことができます。
- ビルドの説明をJenkinsから分離してファイル化し、構成管理することができます。
- READMEの内容を、上述のExtra Columnsの設定値を配慮したものにしておけば、ビュー上にジョブの概要を示すことができます。
気に入ったリストビューカラムがないときは...
ListViewColumn (Jenkins core 2.177 API)に書かれている基本要件と、上記のプラグインのコードを参考にしつつ、プラグインを開発してみましょう!
やっつけ実装なので公開できるレベルではありませんが、下図のように、上流ジョブ(ここではPARENT)を起点にして「PARENT => CHILD => GRANDCHILD」の順で実行されたビルドチェーン全体の所要時間を表示することもできます。
おわりに
標準のままだと2手3手かかる「ジョブの設定画面の表示」や「コンソール出力画面の表示」が、「ジョブの設定ボタン(Extra Columns)」や「最新ビルドのコンソール出力ボタン(Console Column)」によって1手で済むので、この手のプラグインは結構重宝しています。
皆さんにとっても、何かお役に立てるプラグインが紹介できたなら幸いです。
明日は id:mallowlabs さんです。
お詫び
今回の記事内で紹介したプラグインの大半は、記事を書く際にローカライズしました。このため、大半のスナップショットがローカライズ後のものになっています。
しかし、ローカライズに使っていたマシンがクラッシュしたため、リソースファイルなどをGitHub/SVNに登録するところまでしか済ませていません。
Update Centerから入手できるプラグインは、ローカライズ前のものですので、その点はご了承下さい。