Firebase Distributionを使ってFastlane経由でipaをDeployする
はじめに
CI構築でFirebase Distributionを使うことになったんですが結構ハマったので次回ハマらないようにメモとしてハマったところをメモしておきます。
基本は以下の公式ドキュメントで大丈夫だと思いますがハマったところを補足で追加しておきます
https://firebase.google.com/docs/app-distribution/ios/distribute-fastlane?hl=ja
Firebase Distribution
① fastlane を設定する
Firebaseの導入に関しては省きます、過去に記事を書いているのでわからなければそちらを参照してみてください!
iOSはAndroidと違い証明書という強敵もいるので以下の記事でipaを吐き出せない場合は証明書おかしい可能性が高いのでそこから確認した方が良いかも
fastlane add_plugin firebase_app_distribution
② Firebase で認証する
認証に関しては3種類あるようですが、プラグインのログイン操作で Google アカウントにログインするで試しました。
以下のコマンドを叩くとURLが発行されるのでURLを適当なブラウザで開きます、Googleアカウントの承認を求められるので承認します。
bundle exec fastlane run firebase_app_distribution_login
認証後ターミナル上にtokenが発行されているのでそちらを環境変数として設定します
export FIREBASE_TOKEN=発行されたトークン
補足
認証に失敗した状態でfastlaneを叩くと以下のエラーが出ます。このエラーが出た時は認証周りを見直しましょう🚨
Firebase distribution App Distribution could not generate credentials from the refresh token specified.
yaml
以下のようなyamlを定義すればipaをFirebase App Distributionにあげることができます。
どこに書いてあるのか迷う箇所がいくつかあったのでメモとして残します。
desc "deploy STG on Firebase App Distribution"
lane :distribution do
# .ipaファイルの作成
gym(
workspace: "hoge.xcworkspace",
scheme: "hoge",
export_method: "ad-hoc",
export_options: {
method: 'ad-hoc',
teamID: 'hoge',
provisioningProfiles: {
'hoge(Bundle Identifier)' => 'hoge(Provisioning Profile Name)'
}
}
)
# firebase app distributionに.ipaアップロード
firebase_app_distribution(
app: "アプリ ID",
testers: "hoge1@example.com, hoge2@example.com",
release_notes: "hoge",
firebase_cli_path: "node_modules/.bin/firebase"
)
end
teamID
pod使ってない場合のworkspaceの指定
プロジェクト名.xcodeproj/project.xcworkspace
provisioningProfilesの確認
provisioningProfiles: {
'①(Bundle Identifier)' => '②(Provisioning Profile Name)'
}
アプリ IDの確認
注意点ですがfirebase_app_distributionに使用するアプリIDはApple Developpr Programに記載されているアプリIDではありません!!
勘違いしてかなりハマりました😇
Firebase consoleのプロジェクト概要からアプリIDを探しましょう。