Jenkinsでビルド・テスト・カバレッジ出力・コード静的解析を自動化する:iOSアプリ開発でもCI/継続的デリバリしようぜ(3)(3/4 ページ)
現代の開発現場において欠かせないCI/継続的デリバリを、iOSアプリ開発に適用するためのツールやノウハウを解説する連載。今回は、CIツールJenkinsのインストールと使い方、プラグインを用いたiOSアプリのビルド、テスト、カバレッジの出力、ソースコードの静的解析を自動化する方法を解説します。
ソースコード管理の設定
まずはリポジトリの設定です。[ソースコード管理]のセクションで「Git」を選択し、Repository URLにGitリポジトリのURLを入力してください。また、[Branch Specifier]はデフォルトでmasterブランチが設定されていますが、特定のブランチを対象としたい場合は設定を変更するようにしましょう。ここでは、developブランチを対象としました。
[ビルド・トリガ]の設定
次にジョブの実行タイミングの設定です。ジョブをどのタイミングで実行するかは[ビルド・トリガ]セクションで設定できます。以下の3つのトリガーから好きな実行タイミングを設定します。これらのトリガーは複数設定することも可能です。
- 【1】他のプロジェクトのビルド後にビルド
特定のジョブのビルドが完了した後にビルドします。ビルドとテストのジョブを分けたいときなどに便利な設定です。
- 【2】SCMをポーリング
リポジトリをポーリング(更新がないか定期的にチェック)します。ポーリングの間隔はcronライクな書式で設定できます。リポジトリにpushされたタイミングで自動的にビルドできるようになります。
- 【3】定期的に実行
決まった時間に定期的にジョブを実行します。実行する時間はポーリングの設定と同様、cronライクな書式で設定できます。
ここでは「SCMをポーリング」をチェックし、スケジュールを「H/15 * * * *」(15分ごとにポーリングを実行)に設定しましょう。
ビルドの設定
次にビルドの設定に移ります。ここでは、ジョブを実行するときに処理を行う流れと、その処理の設定を行います。今回は、以下の順番で処理を行うように設定してみましょう。
- CocoaPodsのコマンドの実行(pod install)
- Xcodeプロジェクトのビルド(ipaファイルの生成)
- xcodebuildコマンドによるテストの実行
- Gcovrによるテストのカバレッジファイルの出力
- OCLintによるソースコードの静的解析
- 【1】CocoaPodsコマンドの実行
まずは、CocoaPodsでインストールしたライブラリのアップデートを行う処理を追加する必要があります。[ビルド手順の追加]から[Update CocoaPods]を選択してください。[Clean "Pods" folder]にチェックを入れると、前回のビルドで生成した「Pods」ディレクトリをクリーンします。
- 【2】Xcodeプロジェクトのビルド
次に、Xcodeプロジェクトのビルドの処理を追加しましょう。「ビルド手順の追加」から「Xcode」を選択してください。Xcodeプロジェクトのビルドに関する設定項目が表示されます。設定項目が多いので、以下の表にまとめました。1つずつ確認しながら設定してください。
[General build settings]
ビルドの一般的な設定項目です。ビルド前に行っておいてほしい処理や、ipaファイルのファイル名や出力先などを設定できます。
設定項目 | 解説 | 設定値 |
---|---|---|
Target | ビルドのターゲット | KiwiSample |
Clean before build? | ビルドの実行前にbuildディレクトリを削除するか | Yes |
Allow failing build results? | xcodebuild実行時の失敗を許可するか | No |
Generate Archive? | .xcarchiveファイルを作成するか | No |
Configuration | 対象とするConfigration(デフォルトではDebugかRelease) | Debug |
Pack application and build .ipa? | .ipaファイルを作成するか | Yes |
.ipa filename pattern | .ipaファイルの名前のパターン | KiwiSample-${VERSION}-${BUILD_DATE} |
Output directory | .ipaファイルの出力先 | なし(buildディレクトリ直下) |
[Code signing & OS X keychain options]
ビルドに使う認証情報とKeychainの設定項目です。Jenkinsを動作させるマシンが開発マシンと異なる場合は、Jenkinsを動作させるマシンでiOSアプリがビルドできるように、認証情報を設定する必要があります。
あらかじめ、KeychainをiOS Developer ProgramのCertificateに登録しておいたり、Provisioning Profileをリポジトリに含めてJenkinsを動作させるマシンからアクセスできるようにしておいたりする必要があります。Jenkinsを動作させる環境に合わせて設定してください。
設定項目 | 解説 | 設定値 |
---|---|---|
Code Signing Identity | Certificateの名前 | なし(Xcodeプロジェクトの設定を適用) |
Embedded Profile | Provisioning Profileのファイル名 | なし(Xcodeプロジェクトの設定を適用) |
Unlock Keychain? | Keychainのロックを解除するか | Yes |
Keychain path | .keychainファイルの場所 | ${HOME}/Library/Keychains/login.keychain |
Keychain password | .keychainファイルを開くためのパスワード | なし |
[Advanced Xcode build options]
xcodebuildコマンドに関する設定項目です。xcodebuildコマンドを実行するときの詳細な設定を変更できます。
設定項目 | 解説 | 設定値 |
---|---|---|
Clean test reports? | テストの結果の出力ファイルをクリーンするか | Yes |
Xcode Schema File | ビルドの対象とするScheme | なし(全てのSchemeを対象) |
SDK | ビルドに使用するSDK | なし(Xcodeプロジェクトの設定を適用) |
SYMROOT | ビルドに使用するSYMROOT | なし(Xcodeプロジェクトの設定を適用) |
Custom xcodebuild arguments | xcodebuildコマンドに付加するコマンドライン引数 | なし |
Xcode Workspace File | .xcworkspaceのファイル名 | KiwiSample |
Xcode Project Directory | .xcodeprojが存在するディレクトリ | なし |
Xcode Project File | .xcodeprojのファイル名 | KiwiSample |
Build output directory | 出力ファイルの保存先 | なし |
[Versioning]
バージョンに関する設定項目です。今回は使用しませんが、ここの設定を編集すると、CFBundleShortVersionStringとCFBundleVersionをJenkins側で更新できます。
例えば、Technical Numberに${BUILD_NUMBER}を設定することで、CFBundleVersionをJenkinsのジョブ番号と合わせるなどといったこともできます。
設定項目 | 解説 | 設定値 |
---|---|---|
Provide version number and run avgtool? | バージョン番号に関する設定を編集するか | No |
Marketing version | CFBundleShortVersionStringの設定値 | なし(Xcodeのプロジェクト設定を適用) |
Technical version | CFBundleVersionの設定値 | なし(Xcodeのプロジェクト設定を適用) |
Copyright © ITmedia, Inc. All Rights Reserved.