FlutterアプリをCodemagicでCDしてみた(Google Playストア)

FlutterアプリをGooglePlayストアコンソールに登録しました。
まだクローズドアルファ版ですが、公開してからやはりちょこちょこと修正したい箇所が発生して直しています。

しばらく、手動でリリースをチクチク作成していたのですが、ふと気付きました。

CodemagicでCD出来るじゃないか！

ということで、CDする場合の手順をまとめました。

# CDってなに？

CD = Continuous Delivery = 継続的デリバリー

つまりリリース作業を自動化しましょうってことです。

CIは、継続的インテグレーションで、これはテストまでの開発プロセスを自動化しましょうってことでした。

リリースは怖いからいくつもチェック表を見ながら人が作業して・・・
というのがほとんどだと思いますが、チェックしても人の作業にミスは付き物。だったら自動化すれば良いじゃ無い？

ということで、そっちを自動化するのが、CDの方です。

Codemagicへは、すでにtagトリガーなどで動くワークフローがあるものとします。
([こちらの記事](https://qiita.com/kasa_le/items/d23075d817f42e869778#codemagic%E3%81%AB%E5%85%A5%E3%82%8C%E3%81%A6%E3%81%BF%E3%81%9F)などを参照して下さい。)
また、Playコンソールにて、アプリを登録済で、かつ一度どこかのトラックでリリースを公開済みとします。
([こちらの記事](https://qiita.com/kasa_le/items/2013d63adb026dee9305)などを参照して下さい。)

# 手順

基本的には、以下のページの通りですが、一部UIが変わっているのでキャプチャーを撮り直しています。
https://docs.codemagic.io/publishing/publishing-to-google-play/

## 1.Google play開発者アカウントのサービスアカウントを作成する

- 左側のメニュー[設定]-[APIアクセス]を開き、[サービスアカウントを作成]をクリック
![playconsole_api.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103886/82224833-b4a4-80da-9c03-a38f903cc265.png)

- ポップアップにある[Google API コンソール]のリンクをクリック
![playconsole_create_serviceaccount.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103886/4f11ef65-18a3-588a-f92a-ec05d33e4daa.png)

Google APIのコンソールページに飛びます。

- [+サービスアカウントを作成]をクリック

|![googleapi_console.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103886/96464f22-4d10-9c3a-b523-3f7a5c3382fa.png)|
|:--|

- [ロールを選択]をクリック

|![googleapi_console_create_serviceaccount.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103886/ca5638de-f544-a59e-7cd7-a3bd90ecea57.png)|
|:--|

- [Service Accounts]-[サービスアカウント ユーザー]を選ぶ
  - フィルターしようと思って`S`を入れても出てこないので、地道に探して下さいw

|![select_role.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103886/ab85e805-a931-c735-9bf9-93bd2aba8353.png)|
|:--|

- [続行]をクリック

|![role_selected.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103886/bd722d06-d0bd-155a-e495-07b7628cdf21.png)|
|:--|

- 少しして表示されたページを下にスクロールし、[+キーを作成]をクリック

|![create_key.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103886/63613e22-94cd-a9d9-63ac-9e0f7cb6f5e3.png)|
|:--|

- 以下の設定にして、[作成]をクリック

|![create_key_json.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103886/f46d5acd-3c36-740a-40dc-0b304dcfdc07.png)|
|:--|

- Jsonが自動でダウンロードされます

## 2.Playコンソールでサービスアカウントに権限を付与する

Playコンソールのタブに戻り、以下のページのままになっていると思うので、[完了]をクリックします。

![playconsole_create_serviceaccount_done.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103886/9b7d01cd-6ac3-dc72-50e8-60b7f43a034b.png)

- 今作成したサービスアカウントの横の、[アクセスを許可]をクリック

|![grant_access.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103886/f83d39d8-aeb7-b448-1c5b-b6ea7ae85d77.png)|
|:--|

- **役割**のリストから、[リリースマネージャー]を選ぶ

|![role_rerelasemanager.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103886/e5259c7f-91d5-e61e-f0c9-3596edfe5244.png)|
|:--|

- 下にスクロールして、[ユーザーを追加]をクリック

|![add_user.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103886/dc19dae8-21cd-c56a-f723-3d200530dc48.png)|
|:--|

## 3.Codemagicにサービスアカウント情報を設定する

ワークフロー設定を開き、**Publish**の設定項目を開きます。

- **Google Play**の項目を開く
  - 先ほどダウンロードしたJsonファイルをDnDする
  - 任意のTrackを選ぶ
     - ここではクローズドアルファ版をセットしています

|![add_json.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103886/7db40384-57f7-f446-eddd-e152dada1fd2.png)|
|:--|

- **Enable Google Play publishing**のチェックを入れる
- [Save]を忘れないようにクリック。

以上で、設定は終わりです！

# 感想

masterへのPR => アルファやベータ、あるいは内部テスト版へのリリース
tag付け => 製品版にリリース！

としてもいいかも知れませんが、バージョンコード問題があるので、ちょっとこの辺は頭を使った方が良さそうです。

でも取り敢えず、何度もアルファ版のリリースを作成する作業から解放されました！