次に、テストを実行する処理を追加しましょう。「ビルド手順の追加」から「シェルスクリプトの実行」を選択し、以下のコマンドを入力してください。これらのコマンドでは、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シミュレーターの名称を正確に入力する必要があるので、注意してください。
次に、Gcovrを使ってテストのカバレッジファイルを出力する処理を追加しましょう。「ビルド手順の追加」から「シェルスクリプトの実行」を選択し、以下のコマンドを入力してください。
$ /usr/local/bin/gcovr \ $ -r $WORKSPACE \ $ --exclude '.*Tests.*' --exclude '.*ExternalFrameworks.*' \ $ -xml > build/coverage.xml
次に、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.