Jenkins + Android + SonarQube (旧 Sonar) で一歩進んだ自動テストな CI 環境を構築する パート2
前回の続きです。今回は、Android 用プロジェクトを Jenkins のジョブ登録してビルド実行・Sonar で確認まで行いたいと思います。
テスト可能な Android の Maven プロジェクト一式を用意します。
stephanenicolas/Quality-Tools-for-Android や SonarSource/sonar-examples の android-maven-emma などいくつかあります。Android のテストを実行可能な Maven 形式のプロジェクトは、親プロジェクト+アプリ用プロジェクト+テスト用プロジェクトの構成になります。各プロジェクトの pom.xml 設定は Quality-Tools-for-Android よりも android-maven-emma の方が簡潔なので、こちらをダウンロードし各 pom.xml について以下の様に修正します。
- android-maven-plugin のバージョンを 3.6.1 (3.6.0 以上) へ修正します。
- dependency の書き方が mosabua/maven-android-sdk-deployer と異なっているので、groupId を com.google.android ⇒ android、version を 2.3.3 ⇒ 2.3.3_r2 へ変更します。また、android-test は不要となるので android-test の dependency ブロックを削除します。
Jenkins ジョブ作成
- http://localhost:8080/jenkins へアクセスして "新規ジョブ作成" をクリックします。
- ジョブ名に何か入力し、"Maven2/3プロジェクトのビルド" を選択の上、"OK" ボタン押下します。
- "ソースコード管理" に Subversion や Git を指定したいところですが、今回の方法だとローカルにしかソースがないので、Jenkins ジョブのワークスペースへ直接ソース一式を放り込みました。
※ここで pom.xml を修正してください。
$ cd $home
$ unzip sonar-examples-master.zip
$ # android-maven-emma を workspace という名前に変更して移動します
$ mv sonar-examples-master/projects/languages/android/android-maven-emma .jenkins/jobs/${ジョブ名}/workspace
- "ビルド" を設定します。
- "ビルド環境" を設定します。
- "ビルド後の処理" から "Sonar" を選択し設定をします。-Dsonar.profile で Sonar 側で使用する品質プロファイルを指定しています。Sonar 側で "Android" 品質プロファイルをデフォルトに設定している場合、ここでの指定は不要です。また、pom.xml のプロパティで
タグによる指定も可能です。
- これでジョブの設定は終わりです。"保存" ボタンを押してジョブ設定を保存します。
- これでジョブの作成ができました。早速 "ビルドの実行" をクリックしてジョブを実行してみましょう。
ジョブが成功したら http://localhost:8080/sonar/ へアクセスして、テストのカバレッジ (網羅率) やソースの品質指標など見てみて下さい。Issues の Blocker や Critical は深刻な不具合や重大なルール違反の件数を表しています。各指標はクリックして深堀ことが可能です。また左側のメニューや画面上部のプルダウンから様々な切り口や時間軸で品質の分析が可能です。
※Sonar の画面キャプチャなどは Twitter アカウントの方へより具体的なのを張ってあるので、詳しく見たい方は @orangesignal へフォロー申請下さい。
かなり駆け足かつ色々端折りながらの説明となりましたがいかがだったでしょうか?