BitriseとDeployGateを連携しAndroidアプリのアップデートを配布

# はじめに
これまで1人で趣味でAndroidアプリを作ってきましたが、ちょっと前からチームになりCI/CDの用意と開発中のAndroidアプリを配布する必要性がでました。CI/CDはBitriseを使い、アプリの配布はDeployGateを使うことにしました。

# 準備
- GithubなどホスティングしているサービスでSignUp済みのBitriseのアカウント
- DeployGateのアカウント
- Slackのアカウント(Slackに通知まで行う場合)

# 配布までの流れ
1. `git push`で変更分をpush(今回はGithubを使っています)
2. BitriseのWorkflow発火
    1. AndroidプロジェクトのBuild
    2. DeployGateへアップロード
    3. 完了メッセージをSlackに通知(おまけ)

# リポジトリとBitriseを紐づける
1. Add New Appボタンを押下![スクリーンショット 2019-04-22 21.31.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356260/0f5edf87-38a8-692b-c234-0d713d3fd3de.png)
2. SET PRIVACY OF THE APPで「Private」 or 「Public」を選択
3. Github, Bitbucket, GitLab, Other/Manualから対象とするリポジトリを選択
4. Setup repository accessで認証方法を設定
5. Choose branchで検証とセットアップをするためのbranchを指定![スクリーンショット 2019-04-22 21.46.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356260/ec9f7637-b87b-95f1-93c8-564e6b124653.png)

存在しないbranchを指定すると次のValidating repositoryで怒られました。
6. Validateが通ると次のProject build configurationが自動で出力され、Bitriseの恩恵を受けることになります。![スクリーンショット 2019-04-22 21.50.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356260/1c9d018f-e737-646a-04f2-3fc39c4b9867.png)
7. 設定を編集しConfirmボタンを押すとアイコンを設定する工程に映るのでアプリのアイコンなどを指定
8. 最後にWebhook setupでgit pushをトリガーにWorkflowを発火させる設定![スクリーンショット 2019-04-22 21.56.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356260/b7e32350-828e-1b23-88d8-17a06f884588.png)
Register a Webhook for me!というボタンをポチるだけでした。

これで `git push` をするだけでBitriseのWorkflowが発火されるようになりました。
デフォルトで用意されていたWorkflowは以下です。
![スクリーンショット 2019-04-22 21.57.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356260/4afbd17c-e54a-80c0-6f2a-bbca38d8e6d6.png)
# AndroidプロジェクトのBuild
Workflowにある+ボタンでStepを追加することができます。Android Buildを追加します。
![スクリーンショット 2019-04-22 22.10.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356260/592ca1c8-bd59-26e6-1947-04b62fa739a2.png)
これを追加するだけで成功しました。

# DeployGateへアップロード
+ボタンでAndroid Buildの後にDeployGate Uploadを追加します。
![スクリーンショット 2019-04-22 22.15.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356260/cfb6492c-0b01-e3ba-d330-f14044edefb4.png)
DeployGate Uploadでは細かく設定を行います。

`Version`
always latestにしました。

`DeployGate: API Key`
1. DeployGateのプロフィールページにあるAPI keyをコピーします。
2. 入力しようとするとこのようなモーダルが表示され、Bitrise上で扱うグローバル変数として定義するように促されます。![スクリーンショット 2019-04-22 22.32.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356260/4fe68f4d-f9c1-14a4-b370-9bcbe6e907f6.png)
3. $DEPLOY_GATE_API_KEYを作成し先ほどコピーした値を代入しました。

`DeployGate: Owner Name`
DeployGateで実際に使っているアカウント名を定義する必要があります。

`App file path`
binary file(APK file)のパスを定義しますが、用意してくれている変数「$BITRISE_APK_PATH」を書くと通ります。

`DeployGate: App Visibility`
アプリ名とアイコンの表示を指定します。

細かい設定は上記以外にも存在しますが、
一旦これでDeployGateへのアップロードに成功し、更新情報が流れます。
<img width="641" alt="スクリーンショット 2019-04-22 22.45.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356260/9418847e-36a9-eac6-0fd1-1d9d0ed726e6.png">

# 完了メッセージをSlackに通知(おまけ)
pushするとチームメンバーに開発中のアプリが配布されるので目的は達成ですが、今後Lintやユニットテストも行う予定なので、Slackに成功or失敗の通知をさせました。
1. SlackのWebhookURLを取得
2. BitriseのWorkflowの最後に「Send a Slack message」のステップを追加![スクリーンショット 2019-04-22 22.55.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356260/41604f07-67a1-d04f-458b-9bb6080d16e6.png)
3. Slack Webhook URLに取得した物を設定
4. Target Slack channel, group or usernameに通知させたいchannelを設定
細かい設定は上記以外にも存在しますが、これでSlackに成功or失敗の通知がきます。
<img width="424" alt="スクリーンショット 2019-04-22 23.00.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356260/4c23e9db-0d72-9092-7dae-3c4b4bf028c7.png">