Hudsonを使ったアジャイルな開発入門

第4回 プラグインを使う

この記事を読むのに必要な時間:およそ 5 分

この連載では,オープンソースの継続的インテグレーション(CI)サーバであるHudsonを利用した,ソフトウェア開発の生産性向上について解説しています。前回の記事では,規模の大きいソフトウェアプロジェクトの開発で,Hudsonを有効活用する方法について解説しました。今回は,Hudsonの魅力の一つであるプラグインシステムに触れます。プラグインは紹介しきれないほどあるので,ここでは比較的一般的だと思われる,Hudsonと外部システムの連携方法を見てみましょう。

プラグインの探し方とインストール

インハウスで開発されていて公開されていないものを除けば,HudsonのプラグインのほとんどはHudsonプロジェクト上で開発され公開されています。プラグインを探すには,まずHudson Wikiのプラグインページを見ましょう。ここには,公開されているほとんどのプラグインが種類によって分類されていて,説明を読むことが出来ます(もっとも説明書きの詳細さはプラグインによって大きなバラツキがあります)。ここで面白そうなプラグインを見つけたら,ダウンロードセクションからダウンロードします。この時,必ず推奨Hudsonバージョン(これはプラグインをビルドする時に使われたHudsonのバージョンです)が説明に書かれているので,このバージョン以降のHudsonがインストールされているかを確認しましょう。

画像

ダウンロードしたプラグインは,Hudsonのユーザーインターフェースからアップロードできます。Hudsonのトップページから,「TODO」をクリックして,「プラグインの管理」を選んで下さい。ここからアップロードするプラグインを選んでインストールします。IDEのようにプラグインのインストールと更新が自動でできるインターフェースが付いているとよいのですが,現在のバージョンでは残念ながらそこまでの機能は実装されていません。

画像

プラグインをアップロードしたら,プラグインを認識させるためにHudsonを再起動する必要があります。「java -jar hudson.war」のように起動している場合はCtrl+Cを押してプログラムを停止してから,もう一度起動すればOKです。既にアプリケーションサーバにインストールしてある場合には,アプリケーションサーバの再起動をしてください。Hudson再起動後,このプラグイン管理画面に戻ってくれば,プラグインのインストールが正常に終了したか,もしくは失敗したかがわかります。

バッチ処理プラグイン

最初に紹介するプラグインは,バッチ処理プラグインです。プラグインの名前は「batch-task」です。これは,ビルド毎に必要ではないけれども,時々実行される定例処理を自動化するための仕組みです。例えば,ビルドをウェブサイトにポストしたり,リリースを行ったり,最新バージョンのライブラリを取り込んだりするのがこれに相当します。

このプラグインをインストールすると,ジョブの設定画面にバッチ処理を設定するためのセクションが現れます。それぞれのバッチジョブにはシェルスクリプトを入力できます。例えば,バイナリをウェブサイトへアップロードするスクリプトは次のようになるでしょう。このようにして任意の数のバッチ処理が設定できます。

画像

このような設定をしておくと,プロジェクトのページにバッチ処理へのリンクが現れ,ここからビルドを実行するのと同じ感覚でバッチ処理を実行できます。

画像

ビルドプロモーションとプラグイン

画像

次に紹介するプラグインは,ビルドプロモーションプラグインです。これは,Hudsonが生成するビルドのうちから,特に優れたビルドを峻別してマーキングするためのプラグインです。

このプラグインの出発点は次のような問題意識です。開発者へ素早くソースコードの状態をフィードバックするためには,一つのジョブにビルドやテストなどの多くの作業を詰め込むのではなく,ある程度細かい単位にわけて,複数のジョブに分解したほうが優れているという説明を,前回書きました。これは,パイプラインのあるCPUの方がそうでないものより沢山の命令を同じ時間で実行できるのに似ています。

ところが,この方法には一つ問題があります。通常,このように分解をするとビルドは一番最初に実行され,その下流ビルドとして沢山のテストが実行されることになります。この時,ビルドだけを行うジョブの履歴を見ていると,ビルドが完了したジョブは全て成功と認定されるのがわかるでしょう。しかし,ビルドが正常に完了したからといって,そのビルドが実際に使えるビルドであるとは限りません。実際,ビルドに失敗するような致命的な問題よりも,ビルドは成功するけれどもいくつかのテストに失敗する,というケースの方が普通でしょう。

さて,私達は今Hudson上でテストも実行しているのですから,成功したビルドはやがてテストされ,その結果は別のジョブ上に表示されます。これまた前回述べたように,ファイル指紋の追跡を利用していれば,Hudsonはどのテストがどのビルドに対して行われて結果がどうであったかを全て知っていることになります。テストの結果を人間が見に行くこともできますが,テストジョブの数が増えるとこの作業は煩雑になります。Hudsonの方で,テストの結果をビルドにオーバーレイしてみることはできないでしょうか?

ビルドプロモーションは,これを実現するための仕組みです。この仕組みの目標は,ただビルドに成功しただけでテストで失敗があった不良ビルドから,テストにも合格して品質に一定の保証ができる優良ビルドを峻別し,優良ビルドを「昇進」させることです。昇進したビルドには,その旨を示す☆マークが付き,また最終成功ビルドに永続リンクが提供されるように,最終昇進ビルドにも永続リングが提供されます。

著者プロフィール

川口耕介(かわぐちこうすけ)

Sun Microsystems, Inc.のシニアスタッフエンジニア。主としてXMLとのそのスキーマ言語関係の仕事をし,JAXB, JAXP, JAX-WSなどの仕様策定・実装に携わった。仕事の他にも,主にjava.netに多数の趣味のプロジェクトをホストしている。Hudsonは趣味のプロジェクトとして開始したが,今では本業の一部。米国カリフォルニア州在住。

URLhttp://www.kohsuke.org/

コメント

コメントの記入