読者です 読者をやめる 読者になる 読者になる

亀岡的プログラマ日記

京都のベッドタウン、亀岡よりだらだらとお送りいたします。

CircleCIでiOSビルド!(初級編: シミュレータビルドとテスト)

さて、最近ちょろちょろiOSの話をしているのは、そろそろSwift勉強せななぁ、と勉強し始めたわけでして。 でもなんというか、やっぱ言語そのものよりものの作り方を先にちゃんとしたくなるのはALMの性なのか。

とはいえ、XCodeVisual Studio以上にGUI至上主義を主張している気がします。iOSビルド時のDevloperライセンスとあいまって、ややこしいことこの上ありません。

しかし、最近のCIサービスはMacをサポートし始めましたし、Visual Studioオンラインにも、Xamarinとの関係できっと早晩にiOSビルドが乗っかると思います。 そんな時に焦らないよう、今のうちに動向を把握しておきましょう、ということでひとつ。

なぜCircleCI?

ビルドの並列性のみの価格体系で、並列ビルド一つまで無料、つまり実質(ビルド時間を我慢すれば)プライベートレポジトリが無制限無料、という恐ろしいサービスですのでね。。。 むろんWerkerなど、新しいCIサービスの料金体系はもっと安かったりしますが、iOSビルドをサポートしているのは、Travis・Circleの二大大手しかいない(2015/03/14現在)ので、iOSビルドをスモールスタートするならCircleCI超いいっすよ。

ひとまず、今回のゴールは、シミュレータ上でビルドを通すこととします。

なにはなくとも、iOSビルドを有効にしてもらおう。

さて、ここまできてなんですが、実はiOSビルドは標準では有効になっていません。Experimental Setting(実験的な設定)の中に項目がありますが、、、

これを有効にするだけでもダメです。

Warning: CircleCI has located an Xcode project or workspace in this repository. CircleCI is currently offering beta access to our iOS build system. Please contact support if you would like access. Once you have beta access, you can enable iOS builds in the 'Experimental Settings' section of the 'Project Settings' page.

というわけで、Betaアクセス権をもらわないといけません。

どうするかってゆうと、

ここからチャットウィンドウがひらきまして、

こんな感じで聞けます。ひどい英語ですが、一応通じてるっぽいです。 ちなみに解法はOrganization単位なので、お気をつけて(僕は対象Organizationを間違えて二回お願いしました) ほとんどルーチンワークなんでしょうけど、細かい質問もわりと答えてくれます。

スキーマを共有する。

さて、アクセス権を開放してもらったら、適当なコミットを入れてビルドを走らせましょう。CircleCIの設定ファイルは.circle.ymlですが、実はこれなしでもデフォルト設定で普通にビルドしてくれるのです。 デフォルト設定、というのはiOSシミュレータ上でテストを実行し、テスト結果をjUnitDoc方式でartifactとして保持」となります。

しかしながら、多くの場合だと、こうなってしまうのでは・・・?

No shared schemes were found in your repo. Please ensure you have shared your scheme. See the iOS documention for more information on sharing schemes. Alternatively, you can explicitly set a scheme with the 'XCODE_SCHEME' environment variable.

というわけで、スキーマの共有が必要です。 方法は・・・

で開く画面*1で、sharedにチェックを入れましょう。

これで、ひとまずはビルドが通るようになったはず。記念にビルドバッチを貼っておきましょうね。

Circle CI

実験用レポジトリ

このあたりの実験は以下で行っています。

参考

*1:なんだよこの頭おかしい階層構造…