はじめに
こんにちは、ブランドソリューション開発本部 WEAR部 Androidブロックの武永です。普段はファッションコーディネートWEARのAndroidアプリを開発しています。
みなさん、GitHub Actionsでの自動化進めてますか?
毎回ローカルでパッケージをビルドしストアに上げその際に人為的ミスが起こったり、担当者の作業が止まってしまっていませんか?GitHub Actionsを使えば、Google Play Console上に自動アップロードを行うことができます。
導入方法
使用するライブラリはr0adkll/upload-google-playです。
GitHub - r0adkll/upload-google-play: A GitHub action to upload an Android .apk or .aab file to the Google Play Console
選定理由は次の通りです。
- GitHub Actionsで利用できる
- 段階的公開や、クローズドテストにも対応している
それでは実際に見ていきましょう。
.github/workflows直下にファイルを追加
実行ファイルを.github/workflows直下に作成します。.githubとworkflowsのディレクトリがない場合は作成します。
リポジトリから参照するsecretの追加
次にリポジトリから参照するシークレットを追加します。
・GITHUB_TOKEN
GitHubの設定から追加します
既に作成済みの場合は同じものを流用できます
・ENCODED_RELEASE_KEYSTORE
キーストア
Base64形式のテキストにエンコードします
・KEYSTORE_PASSWORD
キーストアのパスワード
・KEY_PASSWORD
キーのパスワード
・SERVICE_ACCOUNT_JSON
サービスアカウントを参照します
次の項目で説明します
上記のシークレットは必須項目です。
Google Cloud Platformでサービスアカウントを作成する
Google Cloud Platformに移動し、プロジェクト内でサービスアカウントの作成画面に移動します。サービスアカウント名、サービスアカウントID、サービスアカウントの説明(任意)を入力します。ロールは参照者以上にします。オーナー権限でも可能ですが過剰な権限になってしまうので特に必要がなければ参照者を推奨します。サービスアカウントユーザーロールに、作成したアカウントを入力します。
サービスアカウントの秘密鍵を作成する
サービスアカウントを作成したら次は秘密鍵です。サービスアカウントの詳細からキーを選択し、作成します。キーのタイプはJSONにします。
キーは再度ダウンロードできないので大事な場所に保管しておくことを推奨します。
作成したユーザーを招待する
サービスアカウントの作成が完了したらGCPからGoogle Play Consoleへ作成したサービスアカウントを招待します。サービスアカウントはZOZOの集団にいるので今回はWEARのプロジェクトに招待する必要があるため権限を付与しています。ユーザーを招待する際にどの権限を付与するかチェックを入れます。
Google Play Console上で権限を付与する
アカウントの招待後に同じ権限でアプリへの権限を付与します。
実際のコード
トリガー設定
name: Deploy Google Play Console
on:
pull_request:
branches:
- main
types: [closed]まず、どのブランチがトリガーになるかを設定します。プルリクエストがクローズされると発火します。マージ先はmainです。ブランチをPushしたときにでも設定は可能です。
ビルド
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11Java 11でビルドします。
Keystoreをデコード
Keystoreは単純なバイナリなのでBase64形式でencodeし、文字列としてシークレットに保存する必要があります。
続きはこちら