yaakaito.org

Hosted CIでiOSライブラリ(Overline)のテスト回してみた

AppCode, Hosted CI, Jenkins, Overline, Testing, iOS

こんにちは!うきょーです。 Hosted CIという、なんとMac環境でのJenkinsをホスティングしてくれるという超絶便利サービスがあるのですが、 そこでOverlineのテストを回してみました。(Hosted CIはまだベータ版みたいです。)

参考までに、というかいろいろありそうなので、書いた時点でのOverlineの開発環境を先に乗せておきます。

  • OS 10.7.5
  • AppCode 1.6
  • Xcode 4.5
  • Cocoapods 0.15.2
    • OCHamcrest 1.9

コードはAppCodeで書いています。(Hosted CI関係ないけどAppCodeの問題もあったので下に書きます) テストはSenTestingKit + OCHamcrest。 いろいろあってメインマシンでやらなかったので、ちょっと古いです。

Hosted CI へ登録する

OpenSourceだしfree planで登録しました。 ちょっと時間がかかったので、先にローカルでやれることをやっておきます。

ローカルでテストをビルドする

とりあえずローカルでテストがビルドできないと話にならないので、そっちを確認します。 Cocoapods込みでxcodebuildするのが思えば始めてだったので、ちょっと面倒でした。

まずテスト用のSchemeを作ります。 ビルドの設定へJenkinsという名前のschemeを定義してあげます。

ところでこのschemeをjenkinsから使うのかと思ったんですが、実はいらなかったので、自身のある人はやらなくてよいかもしれません。 作ったらxcodebuild-listしてみましょう。

1
2
3
4
5
$ xcodebuild -workspace Overline.xcworkspace -list
Information about workspace "Overline":
    Schemes:
        ...
        Jenkins

こんな感じに出てきたら準備完了です。xcodebuildJenkinsのshcemeをビルドします

1
$ xcodebuild -workspace Overline.xcworkspace -scheme 'Jenkins' -configuration 'Debug' -sdk iphonesimulator clean build

Hosted CI へログイン

登録できたっぽいメールがきたので、Hosted CI へログインしましょう!ログインするとDashboardが出てきます。何個かプロジェクトがありますね。

下の方にある Create new project からプロジェクトを追加します。

プロジェクトの作成

新しいプロジェクトのセットアップを始めます。

おおーここから大まかな設定は出来るのかー。便利だなー。 けどスクリプトとかどうせ書くんだろうしだるいなぁ、とか思いながらセットアップして、 Create Project します。さて次はめんどうな・・・

なん・・・だと・・・

こいつは・・・まさか・・・ 力強くUpdateします。

プロジェクトのページができます。ビルドします。

俺の知ってるJenkins+iOSと違う・・・。

という感じで拍子抜けするくらい簡単にセットアップが出来てしまいました。 (正確にはAppCodeの問題で2~3回ビルドしたんですが、それは後述します。)

なにげにPodfileのサポートとかも入っててすごい・・・。

GithubにPushしたときにHookでテスト

HookのURLが提供されているので、それを使います。プロジェクトのページにあります。

あとはGithubからJenkins Hook URL を設定して終わりです。

と、というわけで

あっさり動いてしまいましたね・・・?

あ、いや本当に超絶素晴らしいサービスだと思いますし、フィードバックなどしつつ使わせて頂こうと思います、はい。

【おまけ】AppCode使っててうまくいかなかった話

Cocoapodsを使うときに、

[!] Xcodeproj doesn’t know about the following attributes lastKnownFileTypetext for the ‘PBXGroup’ isa.

こういう感じになってしまったので、何かなーと思ったら、

Overline これにはまってた “Problematic attribute added to PBXGroup when renaming group using AppCode : OC-5881” http://bit.ly/13XdHU8

というのを見つけて、リンク先見てみたらどうもこれっぽい。 lastKnownFileType = text; というのが入ってしまうのだとか。

僕の場合はNSNumberのグループに入ってたので、これ消したらなおった。

ありがとうございます。