LoginSignup
1
3

【簡単】GitHub ActionsでGoogle Play Consoleへのアプリリリースを自動化してみよう!

Last updated at Posted at 2023-12-27

はじめに

この記事では、GitHub ActionsでGooge Play ConsoleにAndroidアプリをアップロード・内部テスト公開をし、内部テスターがテストできるようにする方法について記載します。
ライブラリのオプションに指定する値を変えれば、製品版へのリリースも可能です。
ストア情報の作成やビルドなどを手動で行うのは手間もかかる上ミスも発生しやすいので、できる限り自動化をしていきましょう。

前提

  • 内部テストへのリリースについて記載します
  • ビルド物(apk, aab)はPlay Storeにアップロードするstepの前にビルドされており、任意のディレクトリに保存できていること(つまりビルド方法については割愛します)
    • ジョブが異なる場合はArtifactを利用するなどして、 ビルド物を参照できるようにしてください。
  • ライブラリはapkにも対応しているようですが、ここではaabとして記載していきます。

今回使うライブラリ

r0adkll/upload-google-playというGitHub Actionsで利用できるライブラリを使用します。
このライブラリはGoogle Play Developer API v3を内部的に利用しており、現在もメンテナンスが続いているようです。
また、個人的な感想ですが直感的に利用でき、TypeScriptで書かれているのでライブラリ内部のコードも読みやすかったです。
必要な情報やファイルを用意すれば、簡単にGoogle Play Consoleにデプロイすることができます。

用意するもの

GCPのサービスアカウント

認証なしでアップロードすることはできませんので、サービスアカウントが必要になります。
サービスアカウントの作成手順はこちらが参考になりました。
今回はserviceAccountJsonPlainTextプロパティを利用するので、JSONをダウンロードしたらGCP_SERVICE_ACCOUNT_JSONという名前のSercretsを作成し、JSONの中身をそのままペーストしてください。

ワークフローファイル

.github/workflowsディレクトリにdeploy_to_google_play_console.ymlというファイルを作成し、下記をコピペしてください。

.github/workflows/deploy_to_google_play.yml

name: Deploy To Google Play

on:
  workflow_dispatch:

jobs:
  deploy_to_google_play:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - name: checkout
        uses: actions/checkout@v4
        
      - name: Deploy to Google Play
        uses: r0adkll/upload-google-play@v1
        with:
          serviceAccountJsonPlainText: ${{ secrets.GCP_SERVICE_ACCOUNT_JSON }}
          packageName: com.example.MyApp
          releaseFiles: ./app-release.aab
          track: internal
          status: completed

要所を解説します。

  • serviceAccountJsonPlainText...GitHub Secretsに保存してある、GCPのサービスアカウントのJsonの中身(文字列)です。代わりにserviceAccountJsonという直接ファイルを指定するプロパティもあります。
  • packageName...デプロイ対象のアプリのパッケージ名(アプリケーションID)です。
  • releaseFiles...リリース対象となるビルド物のパスです。
  • track...アップロードする際に割り当てたいトラックを指定します。
    • 製品版...production(デフォルト)
    • 内部テスト...internal
    • 他にもalphaやbetaも指定できます。詳細はこちら
  • status...リリースのステータスです。今回は内部テスト全ユーザーに公開したいので、「completed」を選択しました。選択肢はこちらを参照ください。

ここには書きませんが、下記も可能です。

  • statusがinProgressまたはhaltedの時のみ、userFractionで何%のユーザーに公開するか段階リリースの調整

詳しくはREADMEをご覧ください。

実行!

今回はworkflow_dispatchを設定しているので、GitHub ActionsのGUIから実行します。
実行が成功したら、Google Play Consoleでストア情報が作成され、内部テストユーザーに公開されていることを確認してください。

おまけ: リリースノートを指定する

リリースノートの指定の仕方が少し癖があったので、日本語のリリースノートを指定してアップロードする方法を紹介します。
まず、distribution/whatsnewディレクトリを作成、その中にwhatsnew-ja-JPというファイルを作成します。この時文章内に<ja-JP>のようなタグは不要で、リリースノートに指定したい文章をそのまま記述します。

distribution/whatsnew/whatsnew-ja-JP
軽微な修正をしました。

詳細は、testディレクトリ配下が参考になります。
また、ファイルの命名規則などはライブラリのこのファイルで行っているので、気になる方はご覧ください。

下記の通り、whatsNewDirectory: distribution/whatsnewを追加します。

      - name: Deploy to Google Play Console
        uses: r0adkll/upload-google-play@v1
        with:
          serviceAccountJsonPlainText: ${{ secrets.GCP_SERVICE_ACCOUNT_JSON }}
          packageName: com.example.MyApp
          releaseFiles: ./app-release.aab
          track: internal
          status: completed
          whatsNewDirectory: distribution/whatsnew #追記

以上です。

参考

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3