概要
AndroidアプリのCircleCiによる自動ビルドからPlayストア自動アップロードまで試してみる
これでアプリを自前でビルドして作成し、手動でPlayストアにアップロードする手間が省かれる
前提条件
前提条件として既にPlayストアに公開済みのアプリがあること。app bundleに対応していること(apkではなくaabを対象とする)
ビルド設定
./gradlew bundleRelease
で署名付きaabが出力されるよう設定しておく
...
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
を作成し、以下の内容を記述する
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ストア自動アップロード
続いてビルドした aab
を fastlane
を使って自動アップロードする
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 の 内部テスト
トラックに自動アップロードされる。(track
は production
, 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
スクリプトが実行される
...
- run:
name: Install fastlane
command: bundle install
- run:
name: Execute fastlane
command: bundle exec fastlane playstore
...
まとめ
AndroidアプリのCircleCiによる自動ビルドからPlayストア自動アップロードまでできた。
これでアプリを自前でビルドして作成し、手動でPlayストアにアップロードする手間が省かれた