InfoQ

News

HudsonとFindBugsを用いた継続的インテグレーションとコードインスペクション

作者 Srini Penchikala, 翻訳者 編集部 投稿日 2007年12月19日 午前12時4分

コミュニティ
Java,
Agile
トピック
コンフィグ管理,
Delivering Quality,
Artifacts & Tools,
オープンソース
タグ
テスト,
FindBugs,
TestNG,
TDD,
PMD,
Continuous Integration,
JUnit,
Subversion

最近IBM developerWorks(サイト・英語)に掲載された記事(source)において、構築中のプロセスにある継続的インテグレーション(CI)(source)とコードインスペクションタスクをオープンソースツールを使用して自動化する事を取り上げている。それはjava.net(サイト・英語)コミュニティによって開発されたCIサーバであるHudson(サイト・英語)を、Subversion(サイト・英語)コードリポジトリをポーリングし、ソースコードに変更が発見される度にAnt(サイト・英語)ビルドスクリプトを動作するために、どのようにインストー ルし設定するのかを解説している。

著者Andrew Glover氏は通常のCI環境設定において下記の3つを主要アイテムとして挙げた。

  • Apache Antのようなビルドツールを使ったビルドプロセスの自動化
  • CVS(サイト・英語)かSubversionのようなソースコードリポジトリ
  • HudsonのようなCIサーバ

Andrew氏は動作中の自動ビルドのためのHudsonサーバ内で、どのようにJavaプロジェクトを設定するのかを説明するためにサンプルJavaアプリケーションを使用している。また彼はHudsonのプラグイン拡張(source)を使用してFindBugs(サイト・英語)とPMD(サイト・英語)のようなソフトウェアインスペクションツールとコード解析の統合の仕方を解説した。

また、その記事はビルドプロセスの実行時間とテストトレンドをキャプチャーするために、Hudsonをどのように使用したら良いのかを説明している。それぞ れのビルドにCIサーバはJUnit結果のXMLファイルをパースし、何個のテストがそれぞれのアプリケーションビルド間で付加されたのかを示すトレンドグラフを構築する。またそれはそのテストが合格(青グラフ)もしくは不合格(赤グラフ)であるかを表示する。PMDかFindBugsを使用して見つけられたコード違反かもしくは欠陥は、解析の記録のためにそれぞれのビルド内で記録される。

Hudsonはビルドが失敗した際にメールがプロジェクトチームに送られるようにSMTPサーバに設定することができる。またそれはRSSを告知メカニズ ムとしてサポートするので、チームはRSSフィードを介してプロジェクトのBuild Statusページにサブスクライブすることができる。

HudsonはまたJunit(サイト・英語)とTestNG(サイト・英語)テストフレームワーク両方をサポートする。またそれはCVS、ClearCase(サイト・英語)か、もしくはAccurev(サイト・英語)のようなSCMソフトウェア、そしてMaven(サイト・英語)かもしくはGant(サイト・英語)のようなビルドツールに統合することも可能だ。HudsonのWebサイトに載っているプラグインのフルリスト(source)には、異なるオープンソースと商用SCM、コードカバレッジ、問題トラッキングツールとの統合が記載されている。

developerWorksに掲載されているCIトピックに関するもう一つの記事(source)で、Paul Duvall氏はCI環境の設定時のベストプラクティスと彼が呼ぶところのCIアンチパターンの防ぎ方を説明している。そのベストプラクティスとは下記のとおりである。

  • デベロッパは長時間待って一度に数個の変化をチェックするよりも、むしろ小さなコードの塊を頻繁に従事するべきである
  • CIサーバはビルドが壊れる時にプロジェクトチームに即時に知らせるべきである
  • それはプロジェクトチームにビルドの状況を伝えるため、E-mailやRSSのようなフィードバックメカニズムを使用するべきである
  • ビルドの状況フィードバックは簡潔であるべきで、それにはビルドに関連した情報が含まれているべきである
  • ビルドサーバはより早いビルドのため、十分なハードウェアリソースを所有しているべきである
  • プロジェクトチームはより長い動作プロセスを非同期的に行うために、”ビルドパイプライン”アプローチに従うべきである

 原文はこちらです:http://www.infoq.com/news/2007/12/ci-hudson.html

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

クラウドコンピューティング ~ EC2、Mosso、GoGrid

クラウドコンピューティングのプロバイダーであるEC2、Mosso、GoGridの新しいユーザーエクスペリエンスと、それぞれの機能の違いについて学びます。

仮想化入門

このArticleでは仮想化に関する利点と欠点を見ながら、仮想化の違いについて詳しく追っていきます。

Java 6のスレッド最適化は実際に動作しているのか? - パートII

パート2では、ベンチマークの結果を検証するために用いられるテクニックについてさらに深く見ていきたいと思います。最後に、「なぜプロセッサが異なるとロックのコストも大きく異なるのか」と言う真の疑問に答えます。

RESTアンチパターン

本稿では、Stefan Tilkov氏が「RESTful」な設計であると主張するアプリケーションに見受けられる最も一般的なアンチパターンのいくつかについて説明し、それらを避けるための方法を提案しています。

モデル駆動ソフトウェア開発のためのベストプラクティス

Sven Efftinge氏、Peter Friese氏とJan Köhnlein氏が、MDDを取り入れて成功した経験から、ベストプラクティスの解説を行います。

スケーラビリティの構築とパフォーマンスの達成:バーチャルパネル

Our panel of leading experts explores some of the challenges and thought processes that go into making their apps as scalable and performant as possible.

Spring 2.5:Spring MVCの新機能

この記事は、Spring 2.5で導入されたアノテーションを探究する3部作の第2弾です。Web層におけるアノテーションのサポートを扱います。最後の論文では、統合と検査で利用できる追加機能を説明する予定です。

"YUKATA"から始まるコミュニケーション(Agile2008 ライトニングトークより)

私は「浴衣」を着てパーティーに参加したことで、たくさん声を掛けていただけました。 そこで感じたことは、このカンファレンスが人との繋がりを生み出し、また言葉の壁を越えて積極的に交流する場所であることです。民族衣装はそれらを助けてくれるものでした。きっとこの交流が、新たなムーブメントをアジア圏の仲間たちにも与えてくれると確信しています。