背景
Fabric Beta によるテストアプリの配信という記事を書きましたが、
- Fabric が 2020/03/31に終了すること
- Firebase App Distributionの β版がリリースされたこと
- 同僚氏がいろいろ調べて Firebase App Distribution でアプリを配信してくれたこと
以上より、自分の勉強がてらに、記事を更新しておこうと思いました。
前提条件
- fastlane をインストールしておく
- fastlane でアプリのビルドができること
- firebase プロジェクトを用意しておく
- https://console.firebase.google.com/?hl=ja
- Firebase App Distributionで配信グループを作成しておく
- firebase CLIをインストールしておく
ローカルで配信する
※ git commitしてない変更が消えるのでご注意。。。
1. Firebase CLIにログインする
$ firebase login
2. fastlane のプラグインを追加しておく
$fastlane add_plugin firebase_app_distribution
参考
- https://firebase.google.com/docs/app-distribution/ios/distribute-fastlane
- https://github.com/fastlane-community/fastlane-plugin-firebase_app_distribution
3. ローカルで実行する場合、fastlane/Fastfileに以下を追加しておく(Androidアプリを gradleビルドして、firebseで配信する)
※ この例は、stagingDebugビルド
desc "Submit Firebase App Distribution"
lane :distribute do
gradle(task: "clean")
# Compile
gradle(
task: "assemble",
flavor: "staging",
build_type: "debug",
flags: "--stacktrace"
)
# https://github.com/fastlane/fastlane/issues/6325
sh("touch changelog.txt")
File.write("changelog.txt", changelog)
# Firebase App Distribution
firebase_app_distribution(
app: "<Firebaseプロジェクトの app Id>",
release_notes_file: "fastlane/changelog.txt",
groups: "<配信グループ名>"
)
end
4. fastlaneで配信する
$ bundle exec fastlane distribute
5. fastlaneをログアウト
$ firebase logout
CIで実行する場合
1. FIREBASE_TOKENを取得する
$ firebase login:ci
2. .circleci/config.yml に追加
references:
commands:
fastlane_install_firebase_cli: &fastlane_install_firebase_cli
name: Install Firebase CLI
command: |
npm install --save-dev firebase-tools
fastlane_distribute: &fastlane_distribute
name: Run fastlane distribute
command: |
bundle exec fastlane distribute
必要なところで実行する
- run: *fastlane_install_firebase_cli
- run: *fastlane_distribute
3. fastlane/Fastfileに以下を追加しておく(Androidアプリを gradleビルドして、firebseで配信する)
※ この例は、stagingDebugビルド
desc "Submit Firebase App Distribution"
lane :distribute do
gradle(task: "clean")
# Compile
gradle(
task: "assemble",
flavor: "staging",
build_type: "debug",
flags: "--stacktrace"
)
# https://github.com/fastlane/fastlane/issues/6325
sh("touch changelog.txt")
File.write("changelog.txt", changelog)
# Firebase App Distribution
firebase_app_distribution(
app: ENV["FIREBASE_APP_ID"],
release_notes_file: "fastlane/changelog.txt",
groups: ENV["FIREBASE_APP_DISTRIBUTION_GROUP"],
firebase_cli_path: ENV["FIREBASE_CLI_PATH"]
)
end
4. 各環境変数をCIで登録しておく
変数名 | 概要 | 補足 |
---|---|---|
ENV["FIREBASE_TOKEN"] | トークン | CircleCIで実施する場合 必須 |
ENV["FIREBASE_APP_ID"] | Firebaseプロジェクトのアプリ | |
ENV["FIREBASE_APP_DISTRIBUTION_GROUP"] | 配信グループ名 | |
ENV["FIREBASE_CLI_PATH"] | Firebase CLIのPath | CircleCIで設定する場合: ./node_modules/.bin/firebase |
所感
同僚がいろいろ調べてくれたので、そこまで難しくなくできましたが、雑すぎるので、時間があれば書き直す・・・