PR

 前回まで「ビルド」という言葉を使ってきたが、ビルドの定義は一様ではない。コンパイルやさまざまなテストなども含む場合がある。CIでは、このビルドの内容をどうするかが、導入の成否のカギを握るといっていい。

 通常は、ビルドの一連の処理を「ジョブ」として記述する。この定義や実行を支援するのが、MavenやAntなどのビルドツールである。ジョブ管理ツールのJenkinsは、これらのジョブをスケジュールされた時刻に実行する役割を果たすわけだ。

 では、ビルド時のジョブの内容はどのように記述すればよいのか。図1に、オージス総研の伊藤喜一氏が利用するジョブの例を挙げた(Javaの場合)。大きく八つの手順から成る。

図1●ビルド時のジョブの例
図1●ビルド時のジョブの例
ビルド時のジョブをどんな内容にすべきかは悩むもの。オージス総研の伊藤喜一氏らは、八つの手順から成るジョブを採用している
[画像のクリックで拡大表示]

 まず、対象のソースコードをコンパイルし、次にJUnitによる単体テストを実施。そして、Coberturaでカバレッジを測定してレポートを作成した後、静的解析(Checkstyle、FindBugs)を行う。ここまでが、テストに関連する処理である。
 続いて、機能の増減を確認するためにクラスの数などのメトリクス(尺度)に基づく計測を実施。先にテストした結果などを含めて、ドキュメント(Javadoc)を作成する。

 関連するライブラリの一覧を作成し、フレームワークの場合はjarファイルを作成し、Mavenのリポジトリーにデプロイ。アプリケーションの場合はwarファイルを作成し、テストサーバーにデプロイする。狭義には図1の(1)(7)(8)の処理をビルドと呼ぶが、CIではテストやレポート作成まで含めてビルドとすることが多いようである。