3
3

More than 1 year has passed since last update.

AndroidアプリをCircleCiで自動ビルドしてPlayストア自動アップロードまで試してみる

Last updated at Posted at 2021-11-13

概要

AndroidアプリのCircleCiによる自動ビルドからPlayストア自動アップロードまで試してみる
これでアプリを自前でビルドして作成し、手動でPlayストアにアップロードする手間が省かれる

前提条件

前提条件として既にPlayストアに公開済みのアプリがあること。app bundleに対応していること(apkではなくaabを対象とする)

ビルド設定

./gradlew bundleRelease で署名付きaabが出力されるよう設定しておく

build.gradle
...
android {
    ...
    signingConfigs {
        release {
            storeFile file('../keystore/xxxx.jks')
            storePassword 'xxxx'
            keyAlias = 'xxxx'
            keyPassword 'xxxx'
        }
    }
    ...
    buildTypes {
        ...
        release {
            ...
            signingConfig signingConfigs.release
        }
        ...
    }
    ...
}
...

CircleCiの導入

CircleCiのページを開き、GitHub もしくは BitBucket のアカウントでログインする。ログインするとリポジトリが並んでいるので自動ビルドしたいリポジトリを選択する
プロジェクトのルートフォルダに .circleci/config.yml を作成し、以下の内容を記述する

config.yml
version: 2.1

orbs:
  android: circleci/android@1.0.3

jobs:
  build:
    executor:
      name: android/android-machine

    steps:
      - checkout

      - run:
          name: Release build
          command: |
            ./gradlew bundleRelease;

      - store_artifacts:
          path: app/build/outputs/bundle/release/app-release.aab
          destination: app-release.aab

workflows:
  sample:
    jobs:
      - build:
          filters:
            branches:
              only:
                - /release\/.*/

これでrelease ブランチがプッシュされると aab が自動ビルドされ、成果物を CircleCi 上からダウンロードできるようになる

Playストア自動アップロード

続いてビルドした aabfastlane を使って自動アップロードする

Xcode コマンドラインツールのインストール

xcode-select --install を実行

fastlane のインストール

brew install fastlane --cask を実行

インストールが完了したら fastlane へパスを通す

PATH=$PATH:$HOME/.fastlane/bin

fastlane の初期化

ターミナルで Androidプロジェクト のルートディレクトリ(gradlewがあるフォルダがよさげ)に移動しfastlane init を実行

  • Androidアプリの applicationId を聞かれるので入力
  • サービスアカウントJSONファイル の名前を聞かれるので fastlane/api.json と入力
  • fastlane を通して Google Play に情報をアップロードするか聞かれるので n と入力

この作業で fastlane フォルダと、その配下に Appfile , Fastfile が生成される

サービスアカウントJSONファイルの取得

先程指定した api.json を入手する必要がある。 Google Play Console を開き、 API アクセス を選択。

ここで権限がないと以下のように表示され サービスアカウントJSONファイル を入手できないので、権限のある人に作業を依頼する必要がある

権限がある場合は右下の 新しいサービスアカウントを作成 を選択

以下のようなダイアログが表示されるので、表示したまま Google Cloud Platform のリンクを選択

Google Cloud Consoleサービスアカウントを作成 を選択

サービスアカウント名 に任意のアカウント名を入力(Google Play Deploy など?)

ロールサービスアカウントユーザー を選択
作成して続行 をクリック

完了を選択
作成されたサービスアカウントを選択し、 キー のタブを選択。 鍵を追加 から 新しい鍵を作成 を選択し、JSON形式で作成

サービスアカウントJSONファイル のダウンロードが始まるので保存
ここまでで Google Cloud Platform 側の作業は完了である。ダイアログが開いたままになっている Google Play Consoleのタブを開く。完了をクリックすると先程追加したサービスアカウントが表示される

アクセスを許可 をクリック。リリースの箇所にチェックが入っていることを確認し、 ユーザーを招待 をクリック

これで有効な サービスアカウントJSONファイル が取得できたので、Androidプロジェクトの fastlane フォルダの下に api.json とリネームし配置する

fastlane/Fastfile の編集

以下のように記述する。リリース版 aab をビルドし、 Google Play Console の 内部テスト トラックに自動アップロードされる。(trackproduction, beta, alpha, internal) が指定できる

default_platform(:android)

platform :android do
  lane :playstore do
    gradle(task: "app:bundleRelease")

    upload_to_play_store(
      skip_upload_apk:true,
      track:'internal'
    )
  end
end

CircleCi設定ファイルの編集

以下の記述を追記。これで CircleCi 側で fastlane がインストールされ、上記 Fastfile スクリプトが実行される

config.yml
      ...
      - run:
          name: Install fastlane
          command: bundle install
      - run:
          name: Execute fastlane
          command: bundle exec fastlane playstore
      ...

まとめ

AndroidアプリのCircleCiによる自動ビルドからPlayストア自動アップロードまでできた。
これでアプリを自前でビルドして作成し、手動でPlayストアにアップロードする手間が省かれた :ok_woman:

おまけ

ちなみに内部テストでも審査は入るもよう

参考

fastlane による Android アプリの継続的インテグレーション & デプロイメント

3
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
3
3