手動作業を自動化する
ReactNativeで作成したアプリを内部テストする際に、手動でGoogle play consoleに上げるところをFastlane
を使用し、自動化します。
ios版はこちら↓
FastlaneでReactNativeのデプロイを自動化する(ios)
注意点
ios版と違い、androidについては初めのデプロイを手動で実行する必要があります。
keystore
を作成し、internalにアプリをデプロイしたことを前提に話を進めます。
keystoreの作成について
基本的に下記公式ドキュメントに従えば良いですが、最後の作成の際のコマンドは下記を使用します。
Publishing to Google Play Store
cd android
./gradlew assembleRelease
google play consoleのapiの入手
下記公式ドキュメントに沿って(サービス アカウントを使用する)、json形式のapiを入手します。
https://developers.google.com/android-publisher/getting_started?hl=ja
jsonファイルをandroid/secure(新規作成)
直下に保存します。
fastlaneの設定
sudo gem install bundler
cd android
bundle init
Gemfile
が作成されるので、下記を記述します。
gem "fastlane"
fastlaneをインストールします。
bundle update
次にfastlaneを初期化します。
bundle exec fastlane init
質問に対する回答
Package name -> android/app/build.gradle内にあるapplicationId
を入力
Path to the json -> secure/***.json
を入力
meta -> y
プラグインの導入
fastlane実行の際に、自動的にversion numberを上げるためにプラグインを導入します。
bundle exec fastlane add_plugin increment_version_code
Gemfile
に下記が自動的に記述されます。
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)
fastfileの編集
下記を記述します。
default_platform(:android)
platform :android do
// descは説明文ですので、任意の文を挿入
desc "submit internal release to Google Play Store"
// internalテストに関する記述
lane :internal do
# build.gradleファイルのversion numberを実行する度に上げる
increment_version_code(
gradle_file_path: "./app/build.gradle"
)
# apkファイルの設定
gradle(task: "assembleRelease")
# apkファイルの検索
supply(
track: "internal",
apk: "#{lane_context[SharedValues:: GRADLE_APK_OUTPUT_PATH]}"
)
end
// 以下は他のデプロイ先に関する記述です。
desc "submit alpha release to Google Play Store"
lane :alpha do
increment_version_code(
gradle_file_path: "./app/build.gradle"
)
gradle(task: "assembleRelease")
supply(
track: "alpha",
apk: "#{lane_context[SharedValues:: GRADLE_APK_OUTPUT_PATH]}"
)
end
desc "submit beta release to Google Play Store"
lane :beta do
increment_version_code(
gradle_file_path: "./app/build.gradle"
)
gradle(task: "assembleRelease")
supply(
track: "beta",
apk: "#{lane_context[SharedValues:: GRADLE_APK_OUTPUT_PATH]}"
)
end
desc "submit production release to Google Play Store"
lane :production do
increment_version_code(
gradle_file_path: "./app/build.gradle"
)
gradle(task: "assembleRelease")
supply(
track: "production",
apk: "#{lane_context[SharedValues:: GRADLE_APK_OUTPUT_PATH]}"
)
end
end
fastlaneの実行
bundle exec fastlane internal
実行後、google play console内にてアプリがデプロイされたことが確認できます。
alpha
beta
production
へのデプロイについても上記コマンドのinternal
を書き換えれば実行可能です。
Bitriseへ組み込む
CIツールのBitrise
を使用すると、githubにpushした際に自動的にfastlaneを実行することができます。
詳細は下記へ↓
FastlaneのコマンドをBitriseに組み込む(android,ReactNative)