なんとかするから、なんとかなる

エンジニア関係のことを書きます

Jenkinsを使ってiOSの自動ビルドおよびテストをする(ipa生成、テスト実行編)

はじめに

前回に引き続き、iOSの自動ビルド環境を作っていきたいと思います。

今回はBuild実行後のipaの作成方法と、Build後にテストを実行する方法です。

前回

Jenkinsを使ってiOSの自動ビルドおよびテストをする(Jenkinsビルド編) - なんとかするから、なんとかなる

準備

  • 前回作成したテストが追加された、iOSのProject XcodeでProjectを生成する際に、[Include Unit Tests]にチェックを入れていれば大丈夫です。

    • テストの内容は今回関係ないので、とりあえずテストができるばOKです。
  • 一度、ipaファイルを手動で生成しておく。ipaの詳しい生成方法は、目の前のデバイスで検索してください。

    • [Product]-[Product]-[Archive] で作成できます。今回は[Ad-Hoc]で一度生成してください。

Jenkinsでipaを生成する

Jenkinsの設定

Xcode Pluginの設定を変更します。

General build settings

前回チェックを入れなかった[Pack application, build and sign .ipa?]にチェックを入れます。

f:id:hopita:20170606203853p:plain

そして、各設定項目を入力します。 ここでは、[Export method]に"ad-hoc", [.ipa filename pattern]に"${VERSION}“を入力しました。

設定項目について

[Export method]では、生成するipaの種類を入れます。ここでは準備の段階で生成したipaと同じ種類します。

[.ipa filename pattern]では、.ipaのファイル名を付けられます。Vesion以外にも日付などを設定することができます。

[Output directory]では、ipaを出力するdirectoryを変更できるようです。

ビルド

JenkinsのJobを実行すれば、指定したdirectoryにipaが出力されます。

自動テストを実行する

buildが完了したタイミングで、projectに含まれるテストを実行するようにします。

Jenkinsの設定

Jobの設定で[Build]の項目を追加します。 現在、Xcode Pluginの設定がある枠の一番下にある[Add build step]をクリックし、[Execute shell]を選択します。

f:id:hopita:20170606203913p:plain

そして、下記のCommandを追加します。

xcodebuild test -scheme "MySampleApp" -sdk iphonesimulator -project 'MySampleApp.xcodeproj' -configuration Debug -destination "platform=iOS Simulator,name=iPhone 6,OS=10.3"

f:id:hopita:20170606203926p:plain

項目について

  • xcodebuild test

    • xcodebuild でtestを実行するコマンドです。その後に各パラメータを付けます。
  • -scheme

    • テスト対象
  • -sdk

    • テストを実行する環境
  • -project

    • テストするProject
    • ちなみに、workspaceに対してテストする場合は、-workspaceとしてxcworkspaceを入力する
  • -configuration

    • ReleaseビルドかDebugビルドか
  • -destination

    • テストを実行する端末やOSなど細かな設定
    • 上記以外でもよいが、Simulatorであれば既にインストールされている必要がある。

試しに、JenkinsのJoでテストを実行してみると、テスト実施可能なSimulatorの端末とOSが一覧でConsole上で見られます。

ビルド

JenkinsのJobを実行すればビルド後に、テストが実行されます。

テスト結果について

Jenkinsでそのままテストを実行しても、テスト結果はconsoleに出力され、とても見ずらいです。

別途、iOSテストの結果をわかりやすく表示するプラグインなどを紹介したいと思います。

なんかうまくいかないぞQ&A

実践していくうえで、困りそうなことをまとめておきます。

ipaを生成しようしたらエラーがでる

ipaを生成しようとしたら下記のようなエラーが出る場合

error: exportArchive: The operation couldn’t be completed. (IDEDistributionErrorDomain error 3.)

解決方法

一度手動で、ipaを生成してみる

ios - error: exportArchive: The operation couldn’t be completed. (IDEDistributionErrorDomain error 3.) - Stack Overflow

テストしようとしたら、"Xcode project not found"

テストしようとしたら、Projectが見つからない、workspaceが見つからないと出た。

解決方法

テスト実行用に設定したコマンドを確認する。

テスト対象が、 * プロジェクト単体であれば -project “MySampleApp.xcodeproj”

Simulatorが無いのようなことを言われる。

あるはずのSimulatorを指定してもうまくいかない

解決方法

-destinationを代表する文字列を指定する部分を確認する。

スペースや大文字小文字が違うだけで、失敗します。

おわりに

今回はipaの生成方法から、テスト実行まで行いました。 次回は、テスト結果の整形(見やすくする)やメールやslackへの通知を試してみたいと思います。