greenhouseciを触ってみた - iOS -


最近、iOSアプリ向けのCIサービスが増えてきている。
その中から、今回は[greenhouseci](http://greenhouseci.com/)を触ってみたので使い方をまとめてみた。

## 設定
以下の順で設定していきます。

### 新規Projectの作成
greenhouseciにログインしたら、以下のボタンを押して新規Projectを作る。

![スクリーンショット 2015-04-14 20.41.47.png](https://qiita-image-store.s3.amazonaws.com/0/37642/97c15164-938a-9c59-5622-38a3ccf8c599.png "スクリーンショット 2015-04-14 20.41.47.png")

新規Projectが作成されると左側に以下のようなメニューが表示されるので、上から順に設定していけばOK。

![スクリーンショット 2015-04-14 21.02.29.png](https://qiita-image-store.s3.amazonaws.com/0/37642/f4730e06-a5dd-53a8-fa28-4dff72d0de8d.png "スクリーンショット 2015-04-14 21.02.29.png")

### Projectの設定
メニューから「Project」を選択する。

githubのRepository URLを入力する。

![スクリーンショット 2015-04-14 18.48.25.png](https://qiita-image-store.s3.amazonaws.com/0/37642/f45fee7f-cfc5-564b-53db-841475c37a7c.png)

上記画像では、「Public repository」だけど、「Private repository」も可能で、その場合は以下のように「Username and password」か「SSH key」を設定する必要がある。

![スクリーンショット 2015-04-14 20.43.57.png](https://qiita-image-store.s3.amazonaws.com/0/37642/a7421096-4258-f45d-f6d7-fe1cedfba9ce.png "スクリーンショット 2015-04-14 20.43.57.png")

### Build対象となる情報の設定
メニューから「Build」を選択する。

対象となるリポジトリに複数のiOSプロジェクトがあれば、その中から好きなのを選択することが出来る。

![スクリーンショット 2015-04-14 18.48.55.png](https://qiita-image-store.s3.amazonaws.com/0/37642/1d011e90-64c0-9388-d023-8b8639ddc7bc.png)

ここの設定が一番ミスしやすい箇所だと思う。

 - cocoapodsを利用している場合は、Projectは[workspace]になっているものを選ぶ
 - Schemeでsharedの設定をしておく。
   - Xcodeから「Product-> Scheme -> Manage Schemes」でsharedにチェックを入れておく。
 - Provisioning profileとDeveloper certificateの2種類がいることに注意。


### Test
メニューから「Test」を選択する。

XCTestがある場合は、ここでXCTestsにチェックを入れると実行時にTestもおこなってくれる。

![スクリーンショット 2015-04-14 18.49.10.png](https://qiita-image-store.s3.amazonaws.com/0/37642/61efa506-a848-0bd1-ab1c-eaa0008f4582.png)


### Publish時の設定
メニューから「Publish」を選択する。

Build -> Testと来てPublishの段階で以下の4つを設定することが出来る。
![スクリーンショット 2015-04-14 18.51.27.png](https://qiita-image-store.s3.amazonaws.com/0/37642/3c8c4514-075a-c276-0d5d-1a5db2697733.png)

Emailを設定しておくとインストールリンク付きのHTMLメールが飛んでくるので、インストールしたい端末でメールを受信しておけば、そのままインストールすることが出来る。

また、それ以外に外部サービスの「TestFlight」「HockeyApp」「Crashlytics」にアップロードすることも出来る。


### Git Hookの設定
メニューから「Hook」を選択する。

githubのwebhookを使ってpush時にこのjobを動かすように設定することができる。

![スクリーンショット 2015-04-14 18.47.05.png](https://qiita-image-store.s3.amazonaws.com/0/37642/89824ee5-a29e-acc1-13f5-b9c38cb74752.png)

このURLを緑色のリンク(Github hooks page)を押して飛んだ先で設定するだけ。


## 実行
全ての設定が終わったら実際に実行してみる。
メニューの一番上のプロジェクト名をクリックする。

以下の「build」をクリックしたら実行される。

![スクリーンショット 2015-04-14 21.32.18.png](https://qiita-image-store.s3.amazonaws.com/0/37642/eef9ba7e-2ff1-4f99-279f-5e82b06e1f49.png "スクリーンショット 2015-04-14 21.32.18.png")


### 実行結果
実行されると以下のように一覧に結果が表示される。

![スクリーンショット 2015-04-14 18.51.36.png](https://qiita-image-store.s3.amazonaws.com/0/37642/f4185045-859a-407d-fae2-86e801a09ba1.png)

ここでipaファイルのダウンロードも出来る。
また、LOGをクリックすると以下のように詳細な情報が分かる。

![スクリーンショット 2015-04-14 18.51.49.png](https://qiita-image-store.s3.amazonaws.com/0/37642/f66e7958-b24f-d8d1-0fe0-586093c68c7f.png)

また実行時のログも見ることが出来るので何をおこなったかが分かる。


## まとめ＆追記
 - 設定は比較的簡単。
   - 今回設定してみて特につまった箇所は無い。
 - githubのprivate repositoryが利用出来る。
 - ipaファイルの作成＆端末にインストールすることが出来る。
 - TestFlightなどの外部サービスにアップロードすることが出来る。
 - Appiumが利用できる。
 - 2Projectまでは無料。
 - カスタマイズが出来ない。
 - 2015/4/14の段階でXcodeのバージョンは最新の6.3。
   - 6.3がリリースされたのは、2015/4/9

プロトタイプとかあまりやることが細かくないならこのCIはありだと思う。

## 今後調べる予定
### Appium
 - Appiumも出来るみたいなのだけど、どのようにすればいいのか調べてない。
  - 現状、対応しているのはJava/PHP/Python。

```
For both iOS and Android applications Greenhouse also supports Appium tests written in Java, PHP or Python. In case you are interested in other languages, please let us know.

http://greenhouseci.com/faq.html
```

### 他CIサービス
 - [Circle CI](https://circleci.com/)
 - [Ship.io](https://ship.io)

## 参考
 - [How to add iOS Credentials to Greenhouse](http://blog.greenhouseci.com/tutorials/codesigning_tutorial/#developer_certificate)
 - [Greenhouse Tutorial](http://blog.greenhouseci.com/tutorials/add_project/#select_project)