Categories: iOS

スマホアプリ特化のCIツール ship.ioを試してみた for iOS

この記事の人が目でお前iOS書けよという目でこちらを見ていたので書きます。


- blog.yohei.org

androidの方は上見てね。

ちなみに、自分の記事でもgitlabのプライベートリポジトリからのCIを試してます。

ship.ioとは

3行で表すと、

スマホアプリ用に特化した

ビルドテストデプロイが出来る

CIツール!!!!

jenkinsおじさんの代替候補のひとつということですね。

手順

何はともかくTopページの右上からsign up!

メアドとパスワードをいれると即効でもう登録されてdashboardに。

はやいw

左上の+ボタンから早速追加してみる。

iosはworkspaceで作ってねと。Nextぽち。

androidはgradlewつかったbuild.gradeからgradleのタスクをさがしてくれるそうな。よくわかってないけどGot it Thanks!!

今回、gitalbのprivateリポジトリで試してみたかったのと、よへい曰く、httpsではできないらしいのでおとなしくsshでやってみる。

とりあえず+ボタンから鍵を登録してみる

今回は「Generate Key Pair」でship.io用に鍵を生成する。

名前は適当にship.ioとかつけて、Saveするとこんなかんじで鍵が作られるのでPublic Keyをgitlabに登録しておく。

ここで大変なことに気づく。

さっきのSSHの設定に戻るリンクねーじゃんwwwww

しょうがないので戻るボタンで戻る。

が、さきほど登録した鍵がないのでF5で更新(イケテナイ)すると、さきほど登録した鍵が出るようになった。

URL、ブランチ、先ほど設定した鍵とかを設定してScan!!

解析が始まる

ちなみにiosはworkspaceで作ってないとねーじゃん!って怒られるが、大体のプロジェクトはcocoapodsを使ってworkspaceを作っていると思う。

pod installしたらworkspaceつくられるけど、普通これプロジェクトにコミットしないしなぁ。。。(だよね?

と思いつつできないものはしょうがないのでとりあえずxcworkspaceをコミットしておいてからAnalyzeをかけた。

解析が終わるとジョブの設定になる。

xcodeのバージョン選んだり、hookの設定できたりとわりかしなんかよさげ!

ユニットテストの設定

「Add build step」から「Add Unit Tests」を追加する

Project Configurationではスキーマとか変えたければ適当に変更して下さい。

Simulatorではios7.1のiPhone4Sでテストをしてみることに。

ちなみにDevicesにはもっとたくさんの実機でテスト出来そうな雰囲気は醸しだされていた。

cocoapods使いたいので、Build OptionsでPodfileにはチェックを入れておく

それでOKを押下。

ビルド設定

次にビルド設定するために、「Add build step」より、「Build An iOS Application」を追加する。

Archive Buildにチェック。

Adhoc用とかの設定にしたかったらそれ用に別途スキーマを作って、スキーマを選択しておけばいいと思う。

Code Signingのタブでは、証明書とかプロビジョニングプロファイルを登録しろと言われるので、「account(https://app.ship.io/code_signing)」リンクを押下すると、、、

こんなページに飛ばされるので「Add Certificate」ボタンから証明書をうpしてあげる

ちなみに証明書については、お持ちのMacにて、キーチェーンアクセスを開いて、自分のDeveloperとかの証明書を「パスワード無し」で書きだしたのをアップしてあげて下さい。

同じ感じにProvisioning Profilesタブでプロビジョニングプロファイルもアップしておく。

今回はテストなので開発用の証明書と、「iOSTeam Provisioning Profile: *」のワイルドカードのプロビジョニングプロファイルをうpしておいたが、本番用のを登録しておけばそのままappstoreに提出できるIPAが作れるようになります。

証明書などの設定されてるとこんなかんじでcode signの設定もできるようになります。(ださいけどない場合はF5で再読み込みしてね)

Cocoapodsを使いたいのでBuild Optionsにて、Podfileにチェックをいれる。

プライベートリポジトリにあるcocoapodsライブラリも利用できそう。

ひと通り設定したらOKを押下してジョブ設定に戻る。

最後にCreate Job!!でジョブを作成する。

ダッシュボードに戻り、さっそくQueueに入っていたが、しばらくするとすぐにStatusがstartedになっていた。

しかし早速失敗w

失敗したジョブを押下して詳細を見ると、失敗したところとかはわりかしわかりやすく出る

show ouputとか押下すると細かいログとかを見れる。

こけた原因を直した後に、再びジョブを走らせたらちゃんと成功しました。(この時はcode sign設定してなかったのでこけた)

ジョブが成功するとダッシュボードではこんなかんじになります。

ジョブ結果をみると、IPAとかもダウンロードできます。

※説明ではユニットテストからのビルドの順番で説明してますが、うっかりさんな自分はビルドから設定してしまったので上記のSSになっています。

※順番は気軽に後から変えられないのがちょっと残念。

まとめ

こんなかんじでGUIで説明書読まなくても直感的に設定できるので結構楽ちんにスマフォ用CIが組めるのでいいなと思いました。

シェルスクリプトも実行できるのでbetaにアップロードも簡単にできるかと。

これ使うの結構アリアリなんじゃね・・・?

Jenkinsおじさんもう引退でいいんじゃね・・・・・・・・?

mogmet