iOS用のCIサービスBitriseを使ってみた


Qiitaの記事で見かけた[Bitrise](https://www.bitrise.io)を使ってみたところ、とても良いサービスで応援したくなったので紹介記事を書いてみました。

![7174390.jpeg](https://qiita-image-store.s3.amazonaws.com/0/15905/d9a1d9c8-7a0b-ac02-4794-3c6efd683964.jpeg "7174390.jpeg")


## Bitriseの特徴

<dl>
	<dt>iOS用のCIサービス</dt>
	<dd><strong>「Bitrise - iOS Continuous Integration and Delivery」</strong>と謳っていて、iOSをメインターゲットにしているようです。iOSの面倒なビルド周り（Provisioning Profileや秘密鍵等）の設定も簡単でした。また、Beta版のXcodeにもそれなりに追従しているようです。<a href="http://blog.bitrise.io/2015/09/01/virtual-machine-update-with-xcode-7-beta-6-this-weekend-sep-5.html" target="_blank">（2015/09/05にXcode7 beta6へ対応）</a></dd>
	<dt>GitHub以外にも対応</dt>
	<dd>個人的にはBitBucketのプライベートリポジトリで使えるのが嬉しいです。（ストアで公開している個人アプリのソースをここで管理しているので）</dd>
	<dt>GUI設定</dt>
	<dd>WorkflowというGUIの設定画面で設定していきます。WorkflowのImport/Exportはありますので、バックアップを取ったり、別のWorkflowを作る際に活用したりも考慮されています。</dd>
	<dt>オープンソース</dt>
	<dd>各機能がそれぞれの<a href="https://github.com/bitrise-io" target="_blank">GitHubリポジトリ</a>で管理・公開されています。また、設定画面に該当のリポジトリへのリンクがあるのは面白いと思いました。</dd>
	<dt>無料枠あり</dt>
	<dd>個人で使うには充分だと思いました。業務で利用する際は課金の検討が必要かもしれません。(月のビルド回数に制限があるため)　詳細は<a href="https://www.bitrise.io/pricing" target="_blank">こちら</a></dd>
</dl>

よくよく考えたら、VMで起動される環境がMacかつXcodeセットアップ済みということで、iOS以外のプロジェクトのCIとしても使えそうな気もします。


## Get Started

BitBucketにアップ済みのテスト用プロジェクトを使って、アーカイブしたipaファイルをDeployGateにアップするまでを紹介します。

**テストプロジェクト(Xcode7 beta6)はアーカイブが可能な状態でBitbucketにコミット済み
Provisionig Profileおよび秘密鍵(.p12ファイル)とそのパスフレーズは用意済み
として先に進みます**

---

### 【Sign up】

まずはアカウントを作ります

- [JUMP IN!] をクリックしてサインアップを開始

![1_1.png](https://qiita-image-store.s3.amazonaws.com/0/15905/07db944e-223f-9e31-9cde-b4f5296db8e4.png "1_1.png")


- Sign up画面（私はGitHubのアカウント連携を選びました）

![1_2.png](https://qiita-image-store.s3.amazonaws.com/0/15905/eb249be2-a096-97de-1bfb-c5f10d6c8a9d.png "1_2.png")


このあとGitHubの認証画面に遷移しますので、そこで正しく認証ができればサインアップは完了→ Bitriseに戻ってきます

---

### 【Add My App】

対象となるアプリを選んだり、実際の処理内容を設定します

#### ■ 基本設定

 - [CREATE NEW APP] をクリックして設定を開始

![2_1.png](https://qiita-image-store.s3.amazonaws.com/0/15905/a8934d1f-e684-8307-0fba-205f597ac1e5.png "2_1.png")


- リポジトリの場所を選択

![2_2.png](https://qiita-image-store.s3.amazonaws.com/0/15905/5e4e9424-d12e-f07c-0b21-a810483e9637.png "2_2.png")


- リポジトリ「Bitrise-Test」を選択

![2_3.png](https://qiita-image-store.s3.amazonaws.com/0/15905/f932ce6f-0111-c8ca-7b66-1df2dd1595c1.png "2_3.png")


- [USE SELECTED REPO] で決定

![2_4.png](https://qiita-image-store.s3.amazonaws.com/0/15905/7339efe9-62b1-9cb6-2fe3-e72ec1e14af2.png "2_4.png")


- 自動的にclone URLが設定される

![2_5.png](https://qiita-image-store.s3.amazonaws.com/0/15905/7e57271f-7be6-f6bf-2893-d8b6c37feffd.png "2_5.png")


- SSHの設定（[recommended]が付いていればそれを選べば良いと思います）

![2_6.png](https://qiita-image-store.s3.amazonaws.com/0/15905/6e339776-3adf-e750-838e-07bf1bb3711c.png "2_6.png")


- スキャンするブランチの選択

![2_7.png](https://qiita-image-store.s3.amazonaws.com/0/15905/524c6634-98d7-b7bb-b037-fe1685a0f3a8.png "2_7.png")


- ブランチ名を入力して [START SCANNING] をクリック

![2_8.png](https://qiita-image-store.s3.amazonaws.com/0/15905/8e78a4c5-b705-18e4-01a1-3ffea5739da6.png "2_8.png")


- ここまでの設定が正しいかどうかチェックしている模様

![2_9b.png](https://qiita-image-store.s3.amazonaws.com/0/15905/387ce85c-3f92-4069-d9da-fc8b9774602c.png "2_9b.png")


ひき続きビルドの設定へ


#### ■ ビルドの設定

- Click here! をクリック

![3_1.png](https://qiita-image-store.s3.amazonaws.com/0/15905/22535443-b4b9-0cb8-e249-e1737adfcad9.png "3_1.png")


- 「ブランチ名」「プロジェクト名」「スキーマ名」を入力

![3_2.png](https://qiita-image-store.s3.amazonaws.com/0/15905/ccf155d0-9d7b-98e7-35db-28cd15ee74cc.png "3_2.png")


- [Register a Webfook for Me!] をクリックしWebフックの設定

![3_3.png](https://qiita-image-store.s3.amazonaws.com/0/15905/4b01e3c4-7d5b-caf3-fec5-4896ed8fd9e0.png "3_3.png")


- とりあえず一段落

![3_4.png](https://qiita-image-store.s3.amazonaws.com/0/15905/79b9d3df-3d87-90bc-d2a2-7536df57d355.png "3_4.png")



#### ■ Settings

- Settingsメニューをクリック

![4_1.png](https://qiita-image-store.s3.amazonaws.com/0/15905/8a1de7ec-5c4e-ba86-96b9-83ce5d47d5f7.png "4_1.png")


- これまでの設定を確認しつつ下へスクロール

![4_2.png](https://qiita-image-store.s3.amazonaws.com/0/15905/1d0755db-d6fa-67cb-3fc9-7283ae86c8b6.png "4_2.png")


- Provisioning Profile（.mobileprovision）を登録

![4_3.png](https://qiita-image-store.s3.amazonaws.com/0/15905/8ca2d5f2-6207-906e-75a6-abf4a9ae2d1d.png "4_3.png")


- [ADD CERTIFICATE PRIVATE KEY] をクリック

![4_4.png](https://qiita-image-store.s3.amazonaws.com/0/15905/c41ae349-94fb-f2ac-7248-de05956b9085.png "4_4.png")


- 秘密鍵（.p12ファイル）を登録

![4_5.png](https://qiita-image-store.s3.amazonaws.com/0/15905/4e17b081-b995-75ec-ca0d-b1dfe5dda96e.png "4_5.png")


- パスフレーズを入力

![4_6.png](https://qiita-image-store.s3.amazonaws.com/0/15905/b630a08f-ba44-91ce-2e01-5a2c8939543d.png "4_6.png")



#### ■ Workflow

- Workflowメニューをクリック

![5_1.png](https://qiita-image-store.s3.amazonaws.com/0/15905/5b45dc65-ef09-ddba-9ed4-e5c1425d7503.png "5_1.png")


- [+] をクリックしてSTEPを追加

![5_2.png](https://qiita-image-store.s3.amazonaws.com/0/15905/b651f2ca-a0db-0a95-8128-3ddae9bc4ccb.png "5_2.png")


- Select Xcode versionを選択（Beta版を使う際は必須）

![5_3.png](https://qiita-image-store.s3.amazonaws.com/0/15905/6b9b22cd-6f73-86b7-cc4a-babddc49ee67.png "5_3.png")


- プルダウンから -beta を選択し、[SAVE　WORKFLOW]をクリック

![5_4.png](https://qiita-image-store.s3.amazonaws.com/0/15905/9086bda9-1326-4402-61f7-668f2410f9c7.png "5_4.png")


- Select Xcode version のSTEPが追加された  
- 続いて 今回は使用していない Run CocoaPods install のSTEPを削除

![5_5.png](https://qiita-image-store.s3.amazonaws.com/0/15905/ef5397ab-1df6-e9ff-8768-525d85223665.png "5_5.png")


- [DELETE STEP] をクリック

![5_6.png](https://qiita-image-store.s3.amazonaws.com/0/15905/2ae7cc34-eeb9-02d6-329d-3489ce5ccfbb.png "5_6.png")


- Run CocoaPods install のSTEPが削除された

![5_7.png](https://qiita-image-store.s3.amazonaws.com/0/15905/6b3420d5-f3b8-5b23-de59-fdf46adab674.png "5_7.png")


- [+] をクリックしてSTEPを追加

![5_8.png](https://qiita-image-store.s3.amazonaws.com/0/15905/7a6cffaf-1977-5b8d-2193-0a10fc9a3f3d.png "5_8.png")


-  Bash Script Runner にて、DeployGateへのアップ処理を追加

![5_9.png](https://qiita-image-store.s3.amazonaws.com/0/15905/813ca035-7f5b-ef61-5f80-0687f742a52e.png "5_9.png")


- 名称変更

![5_10.png](https://qiita-image-store.s3.amazonaws.com/0/15905/bced9bdd-d885-10b6-e342-70c02dd25307.png "5_10.png")


- スクリプトを追加

![5_11.png](https://qiita-image-store.s3.amazonaws.com/0/15905/cb6ec0bb-a008-a26f-6aed-b8b8d0804681.png "5_11.png")


- 設定完了、[SAVE　WORKFLOW]をクリックしてWORKFLOWを保存

![5_12.png](https://qiita-image-store.s3.amazonaws.com/0/15905/680406e2-47cf-f426-c674-7ff9461575ba.png "5_12.png")


- 【参考】どういう値を設定して欲しいか、どういった値が設定されるかなどが見られるのはGUIの利点。とても便利

![5_ex.png](https://qiita-image-store.s3.amazonaws.com/0/15905/0784a4a2-ceee-9894-c9c1-0facd73143b3.png "5_ex.png")



#### ■ Build

- [START A BUILD] をクリック

![6_1.png](https://qiita-image-store.s3.amazonaws.com/0/15905/3c92d3a4-5c24-64f4-4c86-7e46f8c523d2.png "6_1.png")


- [START BUILD] をクリック

![6_2.png](https://qiita-image-store.s3.amazonaws.com/0/15905/0fd1d18a-69eb-167d-7ee9-95f245d3f44f.png "6_2.png")


- ビルド処理のステータスが開始

![6_3.png](https://qiita-image-store.s3.amazonaws.com/0/15905/946fc2f9-10f1-0d09-c823-7c6f2c4d48de.png "6_3.png")


- 順番に処理されていく

![6_4.png](https://qiita-image-store.s3.amazonaws.com/0/15905/3f542c49-8ffb-f242-d8d9-acd91286d8d3.png "6_4.png")


- 最後まで問題なく完了

![6_5.png](https://qiita-image-store.s3.amazonaws.com/0/15905/95093724-2a60-d6a2-0276-e432bd91d868.png "6_5.png")


- ビルド成功時に送られてくるメール

![6_6.png](https://qiita-image-store.s3.amazonaws.com/0/15905/f6974133-b52d-2a5f-0f1d-4715ed9b0888.png "6_6.png")


- DeployGateへのアップも確認

![6_7.png](https://qiita-image-store.s3.amazonaws.com/0/15905/f44c5aae-5b10-ebdc-2c82-4d6631a9d28d.png "6_7.png")


- 【参考】STEPのところをクリックして開けば、設定やログの確認ができます。

![6_8.png](https://qiita-image-store.s3.amazonaws.com/0/15905/b17f599b-75d2-1c2c-5fec-7b88b31d40f0.png "6_8.png")


![6_9.png](https://qiita-image-store.s3.amazonaws.com/0/15905/1b65e38c-0639-9ba2-38d7-71e5c238b85b.png "6_9.png")


以上で、設定は完了です。

今後リポジトリへpushする度に、自動的にWorkflowが実行されます。


## まとめ

説明するための画面が予想以上に多く、ページが長くなってしまいましたが、実際にやってみると思ったより簡単に設定できるのではないかと思います。

また、今回はDeployGateへのアップをShellScriptでやりましたが、TestFlightやfabric、HOCKEYAPP、Fastlaneなどとの連携機能を選択することも可能です。（STEPの中で選択できます）

その他、SlackやHipChatへメッセージを送る機能もあります。  
実際に見てもらうのが早いですが、必要な機能は一通り揃っているかと思います。

---

他のCIサービスでipaのビルドがうまくいかず消耗しきっている時にBitriseと出会い、iOS向けのサービスはやっぱ違うなぁ と感心して、すっかりファンになりました。

ソースが公開されていたり、UIがキチンとしていてサービスの本気度も感じられます。
  
CI導入時に候補として検討する価値は充分にあるのではないでしょうか。

[Bitrise.io](https://www.bitrise.io)