MercurialのコミットでJenkinsにGradleでビルドさせたりする。構成説明編
JavaプロジェクトをMercurialにコミットしたら勝手にビルドされてテストとかやってくれるのいいですよね!
ということでやってみました。いろんなプロダクトを使ったので今回は全体の構成を説明する編です。
使ったプロダクト
Java、Groovy(プロダクトコードおよびテストコード)
JUnit、hamcrest(テストライブラリ)
Mercurial(VCS)
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のオプションにしておくとよりいいです。)