buddybuildでiOSのCI環境を試す

# buddybuildとは？

CircleCIなどと同じCI環境を提供するサービスです。モバイルアプリに特化しているのでサーバーサイドアプリなどは対応していないようです。

## buddybuildの特徴
* CocoaPods,Carthageのサポート
* Github,Bitbucket対応
* Store配信
* ユーザーからフィードバックレポート（[SDK](http://docs.buddybuild.com/docs/feedback-reporter)を組み込んだ場合）
* SlackやJIRAとの連携機能

## buddybuild overview
buddybuildの紹介動画がありました。
https://www.youtube.com/watch?v=A_0XOmMw03A

## 今回試すこと
* iOSアプリのCI環境を作りたい
* リポジトリはGithubを使用
* CocoaPodsとCarthageを使用
* ビルドに失敗したらSlackで通知
* ビルドに成功したらテスターに配信

以降、こちらの[サンプルプロジェクト](https://github.com/takezou621/hellobuddybuild)で試します。

## 設定
[buddybuild](http://www.buddybuild.com/)にアクセスして、下記のようにメニュー＞Get Started!ボタンをクリックします。

![0.jpg](https://qiita-image-store.s3.amazonaws.com/0/5699/252bf45c-87f3-0287-8e7e-bd5283a49a2e.jpeg)

Emailでも登録できますが、今回はてっとり早くGithubで認証しました。

![01.jpg](https://qiita-image-store.s3.amazonaws.com/0/5699/e5800753-945e-c2f8-b563-063e38950e2b.jpeg)

認証に成功すると今度はリポジトリの選択画面になるので、対象のリポジトリを選択してください。

![04.jpg](https://qiita-image-store.s3.amazonaws.com/0/5699/a25b2310-e6f7-9948-cc18-1aac68da7364.jpeg)

リポジトリを選択すると自動的にビルドが開始されます。プロジェクト直下にPodfileやCarfileが存在する場合は自動的にCocoaPodsとCarthageを認識してくれます。

![06.jpg](https://qiita-image-store.s3.amazonaws.com/0/5699/2e777512-7b55-379e-8b97-b4f27e4d569b.jpeg)

"Care to peek under the hood?"をクリックするとログを見ることができます。

![08.jpg](https://qiita-image-store.s3.amazonaws.com/0/5699/25b68b56-2f78-7b53-11ca-db4fee5c4513.jpeg)

ビルドに成功するとこのような画面になるのでGo to the Dashboardを押してみます。

![09.jpg](https://qiita-image-store.s3.amazonaws.com/0/5699/3e4787e6-2bc1-c7c3-0285-856898ddfa17.jpeg)

## Slackとの連携

DashboardのBuild Settingsをクリックします。

![11.jpg](https://qiita-image-store.s3.amazonaws.com/0/5699/ef1299e0-f918-ad87-872f-e7a3b9a805c0.jpeg)

設定メニューからConfigure Builds Notificationを選択します。

![12.jpg](https://qiita-image-store.s3.amazonaws.com/0/5699/95ef20ed-c71b-5cb3-9444-4ac2721f5654.jpeg)

Slack WebHookという項目があると思うので、次にこのURLを設定します。
（ここからはSlackの設定です）使用しているSlackのIntegrationsから"Incoming WebHooks"を設定します。

<img width="984" alt="14.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/5699/8f95daf7-9d06-331d-45d8-c7676cd562c9.jpeg">

Addをクリックしてください。
<img width="888" alt="15.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/5699/298b204b-1049-af08-facf-c52309f8c10a.jpeg">

通知したいSlackのチャンネルを選択して、Add Incoming WebHooks Integrationボタンをクリックすると下記のようにフック用のURLが発行されます。このURLをさきほどbuddybuild設定メニューのConfigure Builds Notificationで表示されたSlack WebHookにコピペしてSaveします。適宜Branchesなどは必要な項目に変更してください。

<img width="1053" alt="16.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/5699/4a4ba739-3fc4-a410-2d55-04f0c4c1c97c.jpeg">

ビルドして動作確認してみます。

![17.jpg](https://qiita-image-store.s3.amazonaws.com/0/5699/de4372c1-40e2-1bc5-866b-7270eb9390a3.jpeg)

ビルドに成功すると、、、
![18.jpg](https://qiita-image-store.s3.amazonaws.com/0/5699/e52de3ce-91c5-88be-7eb5-edad76cbda7d.jpeg)

Slackにこのような通知が飛んできます。
<img width="261" alt="20.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/5699/4934990c-aea4-62fe-64ba-d5cb445dbcf1.jpeg">

ちなみに失敗すると下記のような通知になります。
<img width="220" alt="21.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/5699/7f28f581-ba52-7ab8-f4bb-5c01c31874c5.jpeg">

とりあえず今回はここまで。

## その他
テスターへの配信にCrashlyticsやDeploygateを使っている方も多いと思いますが、buddybuildからは直接連携することはできないようです。ただし、buddybuildにテスターアカウントを登録して、メールで通知する仕組みはあります。

ざっと使ってみて、細かいカスタマイズはできないものの、お手軽にCIを構築したいという方には良さそうです。
詳しくは[公式ドキュメント](https://github.com/takezou621/hellobuddybuild)が参考になるかと思います。