Jenkinsでビルド・テスト・カバレッジ出力・コード静的解析を自動化する:iOSアプリ開発でもCI/継続的デリバリしようぜ(3)(4/4 ページ)
現代の開発現場において欠かせないCI/継続的デリバリを、iOSアプリ開発に適用するためのツールやノウハウを解説する連載。今回は、CIツールJenkinsのインストールと使い方、プラグインを用いたiOSアプリのビルド、テスト、カバレッジの出力、ソースコードの静的解析を自動化する方法を解説します。
- 【3】テストの実行
次に、テストを実行する処理を追加しましょう。「ビルド手順の追加」から「シェルスクリプトの実行」を選択し、以下のコマンドを入力してください。これらのコマンドでは、iOSシミュレーターで実行できるテスト用のビルドと、テストの実施を行っています。
$ xcodebuild \ -target "KiwiSample" \ -sdk iphonesimulator \ -configuration Debug build CONFIGURATION_BUILD_DIR=$WORKSPACE/build ! $ xcodebuild test \ -scheme "KiwiSample" \ -sdk iphonesimulator \ -workspace 'KiwiSample.xcworkspace' \ -configuration Debug \ -destination "platform=iOS Simulator,name=iPhone Retina (4-inch),OS=7.1"
テスト用のコマンドでは、コマンドライン引数に-workspaceにワークスペースのファイル名を指定しています。またDebugビルドを対象としたいので、-configrationにDebugを指定しています。-destinationはテストを実行するiOSシミュレーターの指定です。nameにはXcodeで表示されるiOSシミュレーターの名称を正確に入力する必要があるので、注意してください。
- 【4】テストのカバレッジファイルの出力
次に、Gcovrを使ってテストのカバレッジファイルを出力する処理を追加しましょう。「ビルド手順の追加」から「シェルスクリプトの実行」を選択し、以下のコマンドを入力してください。
$ /usr/local/bin/gcovr \ $ -r $WORKSPACE \ $ --exclude '.*Tests.*' --exclude '.*ExternalFrameworks.*' \ $ -xml > build/coverage.xml
- 【5】ソースコードの静的解析
次に、OCLintによるソースコードの静的解析の処理を追加しましょう。「ビルド手順の追加」から「シェルスクリプトの実行」を選択し、以下のコマンドを入力してください。
$ xcodebuild clean $ xcodebuild | tee xcodebuild.log $ /usr/local/oclint/bin/oclint-xcodebuild $ /usr/local/oclint/bin/oclint-json-compilation-database -- -report-type pmd -o $ build/oclint.xml
ビルド後の処理
ここまででビルド処理の手順の設定が終わりました。最後に、ビルド完了後にどのような処理を行うか設定しましょう。
まず、ipaファイルの保存です。[ビルド後の処理の追加]から[成果物を保存]を選択し、「build/**/*.ipa」を設定します。これでipaファイルが「build」ディレクトリの中に生成されるようになります。
次に、テストのカバレッジ結果の出力です。[ビルド後の処理の追加」から[Coberturaカバレッジ・レポートの集計]を選択し、「build/coverage.xml」を設定します。これでJenkinsのダッシュボードにカバレッジの結果が表示されるようになります。
次に、OCLintの解析結果の出力です。[ビルド後の処理の追加]から[PMD警告の集計]を選択し、「build/coverage.xml」を設定します。これでJenkinsのダッシュボードにOCLintの解析結果が表示されるようになります。
ジョブの実行
これでジョブの作成が全て終わりました。手動でジョブを実行してみましょう。Jenkinsのプロジェクト画面の左メニューの[ビルド実行]をクリックしてください。Xcodeプロジェクトのビルドを数回行っているので少し時間がかかりますが、無事に完了すれば図11のように青いマークが表示されるはずです。
何らかの理由により失敗した場合は赤いマークが表示されるので、設定またはソースコードを見直す必要があります。
また、コードカバレッジやPMD警告(OCLint)の実施結果も画面上に表示されるようになります。これらの解析結果は、iOSアプリの品質を高めるための重要な手掛かりとなるはずです。ぜひ活用していきましょう。
いつでもアプリを実行できるようにしよう
今回は、Homebrewを使ったJenkinsのインストールと、iOSアプリのビルド/テストの自動化に必要なプラグインのインストール、そしてジョブを作成する手順について解説しました。
iOSアプリのビルド/テストを実行するジョブを一から作り上げるのは少し時間がかかりますが、一度作成しておけば、複製して使い回せるので、2回目以降のジョブの作成スピードは非常に速くなります。
Jenkinsを活用し、リポジトリへのPush時にビルドやテストを実施したり、デイリービルドを作成したりしておくと、いざというときに自信を持って安心してリリース(または納品)できるようになります。現在進めているプロジェクトでまだ導入していないのであれば、ぜひ導入してみてください。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- グリーはいかにしてJenkinsを導入したのか(2):JenkinsでCIすればiOSアプリのビルドは、もう面倒くさくない
App Storeへのアプリ公開を前提としたXcodeを使った開発を、継続的インテグレーションするための方法を紹介する。 - DevOps時代の開発者のための構成管理入門(4):膨大なビルド・テストで泣かないための継続的統合/CI実践ノウハウ
「DevOps」という言葉にもあるように、ソフトウェア構成管理は、インフラ運用に取り入れられるなど、変わりつつある時代だ。本連載では、そのトレンドにフォーカスして、現在のソフトウェア開発に有効な構成管理のノウハウをお伝えする。今回は、Jenkinsをはじめ、ツールが格段に使いやすくなってきた継続的インテグレーションについて、概要やメリットに加え、実践ノウハウを事例とともに紹介。 - かんばん!〜もし女子高生がRedmineでスクラム開発をしたら(終):Hud美さんと学ぶRedmine×Jenkinsの神アジャイル
本連載は、ちょっととぼけた女子高生の姉妹が今注目のアジャイル開発手法である「スクラム」とプロジェクト管理ソフトの「Redmine」を使って、システム開発をするというフィクションです。今回は、継続的インテグレーションとJenkinsとは何か紹介し、RedmineやGitとの連携方法を解説します。 - ここが変わった! iOS 7まとめのまとめ(2):便利になったXcode 5新機能7選とAuto Layout入門
大きく変化したiOS 7に戸惑う多くの開発者/デザイナのために、役立つブログ記事をまとめて紹介していく、まとめ連載。強化されたデバッグ機能、Git連携機能、テストフレームワーク「XCTest」とテスト管理機能、OS X Serverと連携するCI(継続的インテグレーション)機能「Bots」などに関するブログ記事をまとめて紹介します。 - iOS SDKで始めるObjective-C入門(2):iOSアプリ開発初心者に捧ぐ開発環境Xcodeの概要とインストール
Windowsを使っていたけど、iOSアプリを作るためにMacを使い始めた初心者を対象に、開発ツールXcode/iOS SDKを使ってiPhone/iPadアプリを作る方法を、プログラミング言語「Objective-C」の書き方/文法を交えて解説。今回は、iOSアプリを開発するうえで必要なプログラミング言語Objective-Cや統合開発環境「Xcode」の概要、環境構築の仕方などを紹介 - Jenkinsの生みの親が語る、継続的インテグレーションの未来
JJUG CCC 2011 Spring基調講演レポート