うさぎ組

ソフトウェア開発、チームによる製品開発、アジャイル、ソフトウェアテスト

MercurialのコミットでJenkinsにGradleでビルドさせたりする。構成説明編


JavaプロジェクトをMercurialにコミットしたら勝手にビルドされてテストとかやってくれるのいいですよね!
ということでやってみました。いろんなプロダクトを使ったので今回は全体の構成を説明する編です。

使ったプロダクト

Java、Groovy(プロダクトコードおよびテストコード)
JUnit、hamcrest(テストライブラリ)
MercurialVCS
Gradle(ビルドツール
Jenkins(CIサーバー)
PostgreSQL(DBサーバー)
FindBugsなどなど(静的解析ツール
いろんなJenkinsプラグイン

自動処理の流れ

1.Java、GroovyコードをローカルのMercurialリポジトリにcommit
2.MercurialがサーバーのMercurialリポジトリへpushし、pushされたMercurialリポジトリがJenkinsのジョブをコール
3.JenkinsがMercurialリポジトリを取得してGradleを実行
4.Gradleがコンパイル、パッケージング、JUnitなどの自動テスト実行、静的解析ツール実行
が主な流れです。

ジョブのオプション

これにオプションとして自動テスト実行前にDBの再作成(DDLを同一リポジトリで管理してそのDDLを使用してテーブルの再作成、テストデータ投入)を行うことも可能としました。
静的解析ツールの実行もオプションとしておくことで、ローカルでは指定なしで自動テストまで、Jenkinsではオプションを指定して静的解析ツール実行までとしました。
こうすることで、通常開発時のビルド負荷を減らし、リファクタリングなどをするときはオプションを指定して慎重に開発するなど使い分けられると思います。
(自動テスト自体も実行時間の観点でFASTテスト、SLOWテストなどに分けておいてGradleのオプションにしておくとよりいいです。)

その他

JUnitのテスト結果はJenkinsの画面から見ることができます。
ジョブが失敗した場合はメールなどで通知をします。個人的にはNabaztagを使いたいです。
今回はWEBアプリケーションではないのですが、WEBアプリケーションの場合にはサーバーへのデプロイと再起動の処理や、Seleniumなどのテストツールが必要になるでしょう。