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

http://harumi.sakura.ne.jp/wordpress/2022/04/06/teamid%e3%82%92%e7%a2%ba%e8%aa%8d%e3%81%99%e3%82%8b/

pod使ってない場合のworkspaceの指定

プロジェクト名.xcodeproj/project.xcworkspace

provisioningProfilesの確認

provisioningProfiles: {
    '①(Bundle Identifier)' => '②(Provisioning Profile Name)'
}

アプリ IDの確認

注意点ですがfirebase_app_distributionに使用するアプリIDはApple Developpr Programに記載されているアプリIDではありません!!

勘違いしてかなりハマりました😇

Firebase consoleのプロジェクト概要からアプリIDを探しましょう。