1
/
5

【TECH BLOG】GitHub ActionsによるGoogle Play Consoleへのアプリ自動アップロードの取り組み

はじめに

こんにちは、ブランドソリューション開発本部 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
This action will help you upload an Android .apk or .aab (Android App Bundle) file to the Google Play Console using the Google Play Developer API v3. releaseFiles The Android release file(s) to upload (.apk or .aab) Comma-separated paths. Supports glob vi
https://github.com/r0adkll/upload-google-play


選定理由は次の通りです。

  1. GitHub Actionsで利用できる
  2. 段階的公開や、クローズドテストにも対応している

それでは実際に見ていきましょう。


.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: 11

Java 11でビルドします。


Keystoreをデコード

Keystoreは単純なバイナリなのでBase64形式でencodeし、文字列としてシークレットに保存する必要があります。

続きはこちら

株式会社ZOZOでは一緒に働く仲間を募集しています
2 いいね!
2 いいね!
同じタグの記事
今週のランキング
株式会社ZOZOからお誘い
この話題に共感したら、メンバーと話してみませんか?