先日、@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にジョブを作成
ジョブの詳細設定(Gitの設定)
今回のiOSのビルドは、Gitリポジトリから行いますので、ソースコード管理システムにGitを選択します。
で、Xcodeで作成したプロジェクトのパスを入力します。
ジョブの詳細設定(Xcodeの設定)
追加すると、下記の画面が表示されますので、設定します。
基本的には、@IT JenkinsでCIすればiOSアプリのビルドは、もう面倒くさくないの通りに入力していきます。
ジョブの詳細設定(成果物を保存)
追加すると、下記の画面が表示されますので、設定します。
こちらも基本的には、@IT JenkinsでCIすればiOSアプリのビルドは、もう面倒くさくないの通りに入力していきます。
ちなみに保存するファイル項目には、「build/**/*.ipa」と入力してください。
ビルド実行!
上記の手順で、JenkinsからiOSアプリをビルドする条件は整いましたので、ばち〜んとビルドしてみましょう。
ビルドは、ジョブの画面からでもできますし、ジョブの一覧画面からも実行できます。
ビルド成功!
多分、ビルドできると思います。
「あれ、ビー鉄さんよ、ビルド#2が成功して、ビルド#1が失敗してるんだけど?」
そうなんです。すみません。僕の設定ミスで一度目が失敗しました。正確にはiOSアプリのビルドには成功したのですが、JenkinsのXCodeの設定でIPAファイルを生成するのチェックをし忘れたため、成果物が生成されずビルド失敗になってしまいました。皆様も、ご注意ください・・・。
JenkinsからiOSアプリをビルドするときの注意点
というわけで、注意点です。
おそらく、すっごいシンプルなXcodeプロジェクトであれば本当に簡単にビルドできてしまいます。
しかしながら、自分が試した感じだと以下の様なプロジェクトだとビルドができませんでした。
・プロジェクト外からファイルを参照している場合
・外部プロジェクトを参照している場合
もちろん、これらはXcode上からだとビルドできますし、エミュレーター(実機)でも動作します。
ですが、JenkinsのXCodeプラグインからだとビルドできません。同じコマンドを実行しているみたいなのですが・・・。
JenkinsのログにiOSアプリをビルドするコマンドが出力されるのですが、これをXcode上のプロジェクト直下で実行するとビルドに成功するのですが、jenkinsのワークスペースで実行すると、うまくビルドできませんでした。
で、どうしたかというと・・・。プロジェクト参照を外して、ソースコード含めすべてプロジェクトに統合しました。すいません。かなり邪道な解決ですが、一応これでビルドできました。あんまり修正されないプロジェクトだったのと、JenkinsのiOSアプリビルドが便利すぎて、これなしでは生きていけない体質になったからです。
最後に、このような記事を公開してくださった@ITさんと、グリーさんに感謝申し上げます。