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

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

Jenkinsを使ってiOSの自動ビルドおよびテストをする(Jenkinsビルド編)

はじめに

前回の続きで、今回はとりあえずサンプルプロジェクトをJenkinsでビルドしてみます。

前回

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

必要のもの

  • Apple Developerライセンス(DeveloperとDistributionが必要)
  • ビルドするサンプルアプリ(空Projectで良い)のProvisioning Profile
    • Git Repositoryからビルドするので、サンプルアプリ生成時に[Create Git repository]にチャックを忘れずに。

Pluginをインストー

  1. Jenkinsを起動したら下記を開きます [Jenkins] - [Manage Jenkins] - [Manage Plugins] f:id:hopita:20170530202315p:plain

  2. タブで[Available]を選択し、[Filter]で"Xcode"を入力します。 f:id:hopita:20170530203007p:plain

  3. 上の画像には出ていませんが、"Xcode integration"を選択して[Download now and install after restart]でインストールする

ちなみに、アドレスバーで下記を入力することで、再起動できます。

localhost:8080/safeRestart

これでPluginの準備は完了です。

JenkinsのJobを作成する

Jobの新規作成

New Itemをクリックします。

f:id:hopita:20170530201839p:plain

JobのGitの設定

Source Code Managementの項目を設定します。

f:id:hopita:20170530203426p:plain

[Git]を選択して、[Repository URL]に作成したサンプルアプリの".git"が入っているところを選びます。 まずは、ビルドするだけなのでBranchはそのままにしておきます。

Xcodeのビルドを設定する

[Build]の[Add build step]で"Xcode"を選択します。 [Target]の項目で作成しておいたサンプルアプリのTargetを指定します。

f:id:hopita:20170530204024p:plain

Code signing & OS X keychain options

[Deveper Team]は"None"のままで、Development Team ID はApple Developer Accountで確認できるIDを入力します。

[Keychan path]は何もいじっていなければ以下を入力。あとkeychainにアクセスするためのPasswordを入力しておきます。

$(HOME)/Library/KeyChains/login.keychain

f:id:hopita:20170530204610p:plain

Advanced Xcode build options

ビルドだけなら必要ないかもしれないですが、以下の設定をしました。

[Clean test reports?]にチェック

[Xcode Schema File]にサンプルアプリのFile名を入力。おそらくTargetと同じだと思います。

Saveする

上記の設定がすべて完了したら、下部の[Save]をクリックしてjobを保存します。

ビルド

設定が完了したら、さっそくビルドです。

[Build Now]をクリックします。

f:id:hopita:20170530205558p:plain

Build Historyが青くなればBuild成功です!

失敗すると赤くなります。

Build History(#××)をクリックして、Console Outputへ進むとエラーの詳細がみれるので調べつつ修正しましょう。

f:id:hopita:20170530205722p:plain

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

上記の作業をすべて読んでいれば同じことが書いてあるのですが、作業をしていて引っかかったところをまとめておきます。

Provisioning Profile がないとダメ

ビルドするだけならDeveloperだけで良いのではないかと思っていたのですが、DistributionとProvisioning Profileがないとダメみたいです。

解決方法

Apple Developer Accountで発行できます。

Jenkinsでビルドしたら、couldn’t find a Provisioning Profile のエラーが出る。

Jenkinsでビルドしたら、以下のようなエラーが出てくる。今回は下記の方法で解決しました。

Check dependencies
No profiles for '{Bundle Identifier}' were found:  Xcode couldn't find a provisioning profile matching '{Bundle Identifier}'.
Code signing is required for product type 'Application' in SDK 'iOS 10.3'

解決方法

JenkinsのJobの設定の中で

[Build]-[Xcode]-[Code signing & OS X keyChain options]-[DevelopmentTeam]

上記の中のDevelopment Team IDをきちんと指定していできていない可能性があります。

Apple Developer Accountの[Membership]-[Team ID]の項目をコピーしてくる。(DistributionのIDですね)

ちなみに

調べている中で、結構Xcode のGeneralで指定している[Automatically manage signing]を外してManualで指定するって記事がありました。

今回の記事を作成する中では、[Automatically manage signing]はチェックありでよさそうです。

進めていく中でダメだったら、そのとき修正します。

[改訂第3版]Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

[改訂第3版]Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)