近頃CircleCIを勉強していてなるほどわからん状態が続いている、一旦ローカル環境からFirebaseにアプリ配信をすることが出来たのでメモ書きで残します。
Contents 非表示
Firebase
対象アプリのFirebaseプロジェクトを作成し、GoogleService-Info.plist
をプロジェクトに入れておく。
アプリIDの確認
Firebaseのコンソールから、プロジェクトの設定
→ マイアプリ
から確認可能、一旦どこかにメモしておく。
CLI トークンの生成
以下のCircleCI公式ページを参考に、TOKENを作成してこれもどこかに一旦メモしておく
- コマンド
curl -sL https://firebase.tools | bash
で、Firebase CLI をダウンロードし、ローカルにインストールします。 firebase login:ci
というコマンドでログインをトリガーします。- ブラウザウィンドウでサインインを完了し、ターミナルの出力で提供されたトークンをコピーします。
- CircleCI のプロジェクト設定で、
FIREBASE_TOKEN
という名前の新しい環境変数を作成し、トークンの値を入力します。
証明書管理リポジトリの作成
こんな感じ
Githubで新しいリポジトリを作成、名前は好きなものに、タイプはPrivate (Publicで公開していい内容ではないので)
対象のアプリディレクトリからターミナルを開き、以下を順に入力
fastlane match appstore
fastlane match adhoc
fastlane match development
ターミナルで証明書を保存するリポジトリURLを聞かれるので↑で作ったリポジトリのURLを貼る
正常に保存されたら勝手にPushされているのでリポジトリをリロードして確認する。
Gemfile
Gemfileを作成して、bundle install
しておく、Gemfile.lockが作成出来たらヨシ。
source "https://rubygems.org"
gem "fastlane"
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)
Fastlane
対象のプロジェクトディレクトリでターミナルを開き、以下を入力 (プロジェクトにすでにfastlaneフォルダが存在する場合は不要)
fastlane init
対象SchemeやAppleIDログインPW等色々聞かれるので合ったものを選択
fastlaneフォルダに必要なファイルは以下の通り (多分)
default_platform :ios
platform :ios do
before_all do
setup_circle_ci
end
desc "Upload to Firebase"
lane :upload_firebase do
match(type: "adhoc")
gym(scheme: "<#Scheme名#>")
firebase_app_distribution(
app: "<#Firebase ID#>",
release_notes: "This is a test release!",
firebase_cli_token: "<#Firebase Token#>" # CLIトークン、一旦ベタ書きでOK
)
end
end
# Matchfile
# 使用するストレージモードの設定
storage_mode("git")
# 証明書のタイプを指定
type("appstore") # 証明書のタイプ: appstore, adhoc, enterprise, development から選択
# 証明書管理用のGitリポジトリURLを設定
git_url("<#URL#>")
# 使用するブランチを指定
git_branch("master") # 証明書が格納されている正しいブランチを指定
# Apple Developer アカウントに対応するチームID
team_id("<#Team ID#>") # 実際のApple DeveloperチームIDに置き換えてください
# このMatch設定に対するアプリのバンドルIDを指定
app_identifier(["<#Bundle ID#>"]) # アプリのバンドルIDに置き換え
# Gitリポジトリにコミットする際のユーザー情報
git_full_name("<#ユーザ名#>")
git_user_email("<#メールアドレス#>")
# 新しいデバイス用に証明書を強制的に生成するオプション(必要に応じて)
force_for_new_devices(true)
# Autogenerated by fastlane
#
# Ensure this file is checked in to source control!
gem 'fastlane-plugin-firebase_app_distribution'
# fastlane/Appfile
apple_id "<#Apple DeveloperにログインするときのID#>"
app_identifier "<#App Identifier#>"
report.xmlとREADME.mdは実行したことがないと最初はない気がするので一旦無視でOK。
長い下準備も終わりで、次に実際に実行していきましょう。
Terminalで実行する
以下を実行
bundle exec fastlane upload_firebase
Apple IDやその他色々聞かれたら適切なものを入力する、結構時間がかかるかも (3分くらい?)
完了したらUpload IPA SuccessfullyみたいになってTerminalの処理も完了するので、Firebaseコンソールを確認する。
コンソールのApp Distributionで対象のアップロードが上がっていたら完了。