CI

JenkinsでiOSアプリをビルドする手順

投稿日:2013/04/29 更新日:

先日、@ITの記事で、「グリーはいかにしてJenkinsを導入したのか」という記事が掲載されておりました。
この中に、Mac上のJenkinsでiOSアプリをビルドする方法について記載がありました。
今回は、この記事の説明にそってiOSアプリのビルドをしてみたいと思います。
基本的に、記事の通りに行えば、すごい簡単にビルドが可能です。
一応備忘録も兼ねて、画面キャプチャも記載します。

まず、今回想定している条件です。
・JenkinsはMac上で動作している
・MacOS 10.8.3(Mountain Lion)
・MacOSにxcodeがすでにインストールされている

※JenkinsにXCodeプラグインと、Gitプラグインをインストールする必要があります。インストールしていない人は、まずJenkinsにiOSアプリビルド用のプラグイン追加方法をご参照ください。

今回ビルドするiOSアプリを作る

Xcode上で適当なアプリを作成します。これは適当でいいです。本当に適当で。
あ、もちろんiOSアプリで作成してくださいね。
すでにiOSアプリを作成済で、今回はじめてJenkinsからビルドする場合の人も、今回はJenkinsからiOSアプリをビルドすることが目的なのでシンプルなアプリを用意してください。なんでかと言うと、うまくビルドできなかった場合、JenkinsなのかXcodeのプロジェクトなのかわからなくなるからです。
シンプルなアプリの場合、Jenkinsでビルドが失敗することはほぼほぼないと思います。
ちなみに、管理人は背伸びしすぎて結構大きいXcodeプロジェクトをビルドしたところ、失敗して結局うまくビルドできませんでした。
詳細は後述したいと思います。

Jenkinsにジョブを作成

いよいよJenkinsにジョブの作成を行います。
新規ジョブ作成 [Jenkins]-2

ジョブの詳細設定(Gitの設定)

test-ios-build Config [Jenkins]
今回のiOSのビルドは、Gitリポジトリから行いますので、ソースコード管理システムにGitを選択します。
で、Xcodeで作成したプロジェクトのパスを入力します。

ジョブの詳細設定(Xcodeの設定)

ビルド手順から「XCode」を選択します。
test-ios-build Config [Jenkins]-1-1

追加すると、下記の画面が表示されますので、設定します。
hoge-ios-build Config [Jenkins]-3
基本的には、@IT JenkinsでCIすればiOSアプリのビルドは、もう面倒くさくないの通りに入力していきます。

ジョブの詳細設定(成果物を保存)

test-ios-build Config [Jenkins]-3
ビルド後の処理から、「成果物を保存」を選択します。

追加すると、下記の画面が表示されますので、設定します。
test-ios-build Config [Jenkins]-2
こちらも基本的には、@IT JenkinsでCIすればiOSアプリのビルドは、もう面倒くさくないの通りに入力していきます。
ちなみに保存するファイル項目には、「build/**/*.ipa」と入力してください。

ビルド実行!

上記の手順で、JenkinsからiOSアプリをビルドする条件は整いましたので、ばち〜んとビルドしてみましょう。
ビルドは、ジョブの画面からでもできますし、ジョブの一覧画面からも実行できます。
ダッシュボード [Jenkins]-3

ビルド成功!

多分、ビルドできると思います。
test-ios-build [Jenkins]-1
「あれ、ビー鉄さんよ、ビルド#2が成功して、ビルド#1が失敗してるんだけど?」
そうなんです。すみません。僕の設定ミスで一度目が失敗しました。正確にはiOSアプリのビルドには成功したのですが、JenkinsのXCodeの設定でIPAファイルを生成するのチェックをし忘れたため、成果物が生成されずビルド失敗になってしまいました。皆様も、ご注意ください・・・。

JenkinsからiOSアプリをビルドするときの注意点

というわけで、注意点です。
おそらく、すっごいシンプルなXcodeプロジェクトであれば本当に簡単にビルドできてしまいます。
しかしながら、自分が試した感じだと以下の様なプロジェクトだとビルドができませんでした。
・プロジェクト外からファイルを参照している場合
・外部プロジェクトを参照している場合
もちろん、これらはXcode上からだとビルドできますし、エミュレーター(実機)でも動作します。
ですが、JenkinsのXCodeプラグインからだとビルドできません。同じコマンドを実行しているみたいなのですが・・・。
JenkinsのログにiOSアプリをビルドするコマンドが出力されるのですが、これをXcode上のプロジェクト直下で実行するとビルドに成功するのですが、jenkinsのワークスペースで実行すると、うまくビルドできませんでした。
で、どうしたかというと・・・。プロジェクト参照を外して、ソースコード含めすべてプロジェクトに統合しました。すいません。かなり邪道な解決ですが、一応これでビルドできました。あんまり修正されないプロジェクトだったのと、JenkinsのiOSアプリビルドが便利すぎて、これなしでは生きていけない体質になったからです。

最後に、このような記事を公開してくださった@ITさんと、グリーさんに感謝申し上げます。

-CI
-,

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

no image

Jenkinsの管理画面で「URLがUTF-8でデコード・・・」みたいな警告が表示される場合の対応方法

クソ長いタイトルの通りなのですが、Tomcat上で動作している、Jenkinsの管理画面で 「URLがUTF-8でデコードされていません。ジョブ名などにnon-ASCIIな文字を使用する場合は、コンテ …

no image

JenkinsにiOSアプリビルド用のプラグイン追加方法

今回は、JenkinsにiOSアプリをビルドするためのプラグインをインストールしてみたいと思います。 Jenkinsのインストールは終わっているものと仮定します。 Jenkinsプラグインのインストー …

CircleCIでGradleをキャッシュする

基本的にCIサーバーには何かをキャッシュする仕組みが準備されていると思います。 ビルドにGradleを使った場合JARのダウンロードに非常に時間がかかる場合があるので、是非ともキャッシュしたいです。 …

Jenkinsでビルド実行時に確認を行う方法

Jenkins便利ですねー。 ビルドボタン一発で処理が実行されますからね。 しかしながら、中には実行が怖いビルドもありますよね・・・。 例えば、本番サーバーで運用しているアプリケーションへのデプロイと …

AnsibleでWordPress環境を構築する

AnsibleでWordPressの動作環境を構築するplaybookを書きました。 Ansibleが2.0系になってからしっかりとつかっていなかったのと、今使っているVPSで稼働しているOSがCen …