はじめに
この記事では、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
というファイルを作成し、下記をコピペしてください。
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>
のようなタグは不要で、リリースノートに指定したい文章をそのまま記述します。
軽微な修正をしました。
詳細は、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 #追記
以上です。
参考