BitriseでAndroidアプリを自動ビルドしてみる

# はじめに
モバイル特化のCI環境であるBitriseを使ってAndroidアプリの自動ビルド、署名、Slack通知まで試してみる

# アカウント作成
[公式ページ](https://www.bitrise.io/) にアクセスしログインする
github ログインしたものとして話を進める

<img width="800" alt="スクリーンショット 2019-05-17 22.34.14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141937/d7de043b-588b-e84d-124e-6f8c427d7cd7.png">

# 初期設定
ログインするとビルド対象のリポジトリを選択する画面になるので手順に沿って進めていく
基本的にボタンをクリックするだけで自動で設定されていく

<img width="800" alt="スクリーンショット 2019-05-18 0.58.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141937/ba92b2c7-1db4-d894-3953-23f644344542.png">

後からでもできるが、WebHookの設定を聞かれるので設定しておく
これによってリポジトリが操作されたタイミングで自動ビルドが実行されるようになる

<img width="800" alt="スクリーンショット 2019-05-18 0.59.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141937/80b4d1cb-c4c9-f556-a594-0e53000a0507.png">

完了するとデフォルト設定のまま最初のビルドが始まる

<img width="800" alt="スクリーンショット 2019-05-18 0.59.27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141937/ea51d696-29ad-31ff-d6be-806aef0b4d40.png">

# Workflowの設定
ビルドは `Workflow` に設定された `Step` に沿って実行されるが、デフォルトで指定されている `Android Lint` `Android Unit Test` は、全 `Build Variants` に対して処理を行う設定になっているので、必要であれば `Variant` 指定を `release` のみなどに変更する

また以下の処理はデフォルトでは実行されないため、別途 `Workflow` に `Step` を追加する必要がある 
- apkのビルド
- 署名
- slack通知
- aabのビルド

## apkのビルド設定
`Workflow` を選択し `Android Build` の `Step` を追加する
ほとんどの項目はデフォルトのままで問題ないが `Variant` の欄のみ修正し `release` を指定した

<img width="800" alt="スクリーンショット 2019-05-18 1.02.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141937/7e00fa78-cc52-1010-e5d9-c4261e34aeb8.png">

## 署名設定
`Sign APK` の `Step` を追加する

<img width="250" alt="スクリーンショット 2019-05-17 23.00.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141937/8523e784-a2a3-10ba-588d-171f7b38b844.png">

上部の `Code Signing` タブから `keystore` のアップロード、パスワード類の入力を行う

<img width="800" alt="スクリーンショット 2019-05-17 23.08.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141937/08b9b9e3-7055-6ae8-7aa9-4b8dc94a403d.png">

`keystore` ファイルは `Protected` 指定することでダウンロード不可にできる
更新する場合は一旦削除してアップロードし直すことになる

ここまでの設定でビルドすると既に署名付き `apk` が出力されるようになっている

<img width="640" alt="スクリーンショット 2019-05-17 23.31.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141937/750a86e6-adc5-0edb-662d-fb96737504da.png">

## Slack通知設定
`Send a Slack message` の `Step` を追加する

<img width="241" alt="スクリーンショット 2019-05-17 23.32.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141937/1bf9542b-2f59-2a76-4aba-8203b64d0787.png">

Slack の方で `Web Hook URL` を発行し、設定する
またメッセージを出力したいチャンネル名も設定する
ビルド完了時に Slack に通知が飛んでくるようになる

<img width=500" alt="スクリーンショット 2019-05-17 23.59.04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141937/9e7ac014-8540-a98b-56ac-9806f2040dde.png">

自動生成されたインストールページ

<img width="402" alt="スクリーンショット 2019-05-18 0.02.14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141937/acfddaef-cffa-b6a7-95ac-ba8182539a66.png">

## aabのビルド設定
`aab` のビルドは `Gradle Runner` の `Step` で行う

<img width="800" alt="スクリーンショット 2019-05-18 0.33.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141937/6369e726-791e-cd9d-c126-06560e40dd6e.png">

- `Gradle task to run`: `bundleRelease`
- `gradlew file path`: `./gradlew`
- `Export Config` の `APK file include filter`: `*.aab` 

は指定する必要があった

# トリガー
上タブの `Triggers` 欄で自動ビルドを実行させるタイミングを指定できる

<img width="800" alt="スクリーンショット 2019-05-18 0.30.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141937/ef4ab5cc-8a0c-4d8d-fdc3-d707300d6e3b.png">

# まとめ
Bitrise で Android アプリの自動ビルドができた :ok_woman: