Fastlane - tsutsumikeiichi/test-i-wiki GitHub Wiki
Envファイルの作成
Fastlane コマンドを実行する前に各自の環境に環境変数を設定する必要があります。
otonari-iOS/fastlane/.env
ファイルを作成する。
このファイルでパスワードなどのgitで管理するべきでないパラメータや、環境変数を管理している。
FASTLANE_USER=(Apple Store Connectにログインするメアド)
APP_STORE_CONNECT_API_KEY_ID=(App Store Connect API のキーID)
APP_STORE_CONNECT_API_ISSUER_ID=(App Store Connect API の Issuer ID)
APP_STORE_CONNECT_API_KEY_CONTENT=(App Store Connect API の秘密キー)
# ex) key_content: '-----BEGIN PRIVATE KEY-----\nfoobar\n-----END PRIVATE KEY-----'
SLACK_URL=(SLACKの投稿先チャンネルURL)
envファイルは以下場所に置きました。
https://drive.google.com/drive/folders/1zTkMfYvs_0YbsdphsUeHWoqdUn2zMDTD
env.txt
を.env
にリネームし、FASTLANE_USER
は自分のアカウントに書き換えてください。
そしてotonari-iOS/fastlane/
以下にディレクトリに置いてください。
またFastlaneコマンドの初回実行時にはApple IDアカウントのパスワードが求められるので入力してください(macOSキーチェーンに保存される)。
App Store Connect API
2021年2月以降、App Store Connect にサインインするすべてのユーザは2段階認証が必須となったため、パスワード使用は止めて App Store Connect API を使用しています。
Using App Store Connect API
https://docs.fastlane.tools/app-store-connect-api/
アプリケーション固有パスワード -> App Store Connect API を使うため使用中止
2021年2月以降、App Store Connect にサインインするすべてのユーザは2段階認証が必須となったため、以下2つの環境変数の追加が必要です。
https://docs.fastlane.tools/best-practices/continuous-integration/#application-specific-passwords
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD
以下のAppleアカウントの管理画面にログインして、App用パスワードとして発行したものを設定します。
https://appleid.apple.com/
FASTLANE_SESSION
以下 spaceauth コマンドで生成したクッキーを設定します。
このクッキーは有効期限が1ヶ月と限られており、定期的に再認証が必要となります。
$ bundle exec fastlane spaceauth -u [email protected]
CircleCI で Fastlane を実行するには、CircleCI の設定画面にあるEnvironment Variables
に登録しておく必要があります。
Beta配信
配信には Firebase App Distribution を利用しています。
コンソールはこちら。
事前に Firebase CLI をこちらを参考にインストールしておいてください。
$ bundle exec fastlane ios build_beta
または Github のbeta
ブランチに push することで Circle CI により上記 lane が実行されます。
UDID 追加
$ bundle exec fastlane run register_device name:"NAME" udid:"UDID"
Beta用プロビジョニングプロファイルを再生成する
UDID を追加した場合
$ bundle exec fastlane ios update_beta_profiles
Development 証明書が期限切れした場合に Development 証明書の再作成、Development プロビジョニングプロファイルを再生成する
$ bundle exec fastlane ios delete_development_certs_and_profiles
$ bundle exec fastlane ios create_development_certs_and_profiles
Distribution 証明書が期限切れした場合に Distribution 証明書の再作成、AppStore プロビジョニングプロファイルを再生成する
$ bundle exec fastlane ios delete_distribution_certs_and_profiles
$ bundle exec fastlane ios create_appstore_certs_and_profiles
App Store Connect にバイナリのアップロード&メタデータ登録
$ bundle exec fastlane ios build_release_appstore
または Github の appstore
ブランチに push することで Circle CI により上記 lane が実行されます。
このコマンドでバイナリアップロード、AppStoreConnect のメタデータ登録まで行います。
コマンド実行前にメタデータ fastlane/metadata/
の更新を行ってください。
リリースノート fastlane/metadata/ja/release_notes.txt
は必須項目なので毎回更新してください。
App Store Connect から登録済みのメタデータをダウンロードする
$ bundle exec fastlane deliver download_metadata --app_identifier 'love.otonari' --force true
App Store Connect から登録済みのスクリーンショットをダウンロードする
$ bundle exec fastlane deliver download_screenshots --app_identifier 'love.otonari'
レビュー申請
上記コマンド build_release_appstore
でバイナリアップロード、AppStoreConnect のメタデータ登録まで終わらした状態で実行してください。
このコマンドを実行することで最新のアップロード済みバイナリと紐づけ、審査申請まで行います。
$ bundle exec fastlane ios submit_review
Fastlaneの内容
lane :submit_review do
upload_to_app_store(
submit_for_review: true, # レビュー申請
automatic_release: false,
force: true,
skip_metadata: true, # メタデータ更新はスキップ
skip_screenshots: true,
skip_binary_upload: true, # バイナリアップロードはスキップ
submission_information: {
add_id_info_uses_idfa: true,
add_id_info_serves_ads: true,
add_id_info_tracks_install: true,
add_id_info_tracks_action: true,
add_id_info_limits_tracking: true
}
)
end
upload_to_app コマンド
https://docs.fastlane.tools/actions/upload_to_app_store/
submission_information設定
https://github.com/artsy/eigen/blob/faa02e2746194d8d7c11899474de9c517435eca4/fastlane/Fastfile#L131-L149
Fabric Crashlytics に dSYM をアップロードする -> Fabric サービス終了に伴い廃止
Bitcode を有効にしている場合は、App Store Connect からダウンロードする必要がある。
バイナリアップロード後に App Store Connect 側で自動生成されて、しばらくするとダウンロード可能となる。
たまに生成に時間がかかる場合があり、作成完了まで数日かかった場合もあった。
最新版
$ bundle exec fastlane ios upload_symbols_appstore
バージョンを指定
$ bundle exec fastlane ios upload_symbols_appstore version:1.4.0
App Store Connect から dSYM をダウンロードする -> Xcode14 から Bitcode が廃止になったためASCからのダウンロードは不要になった
ダウンロード前に以前落としたものがあれば削除しておく。
$ find fastlane/appDsyms -type f -name "*.dSYM.zip" | xargs rm $1
現状、dSYM ファイルのダウンロードは App Store Connect API に未対応なので2FAのコードを手動で入力する必要がある。
# 最新ビルド
$ bundle exec fastlane run download_dsyms app_identifier:"love.otonari" version:"latest" output_directory:"fastlane/appDsyms"
# バージョン&ビルドナンバーを指定
$ bundle exec fastlane run download_dsyms app_identifier:"love.otonari" version:"2.8.0" build_number:"1961" output_directory:"fastlane/appDsyms"
Firebase Crashlytics に dSYM をアップロードする -> Xcode14 から Bitcode が廃止になったためASCからのダウンロードは不要になった
-
App Store Connect から dSYM をダウンロードする。
TestFlight > 対象のビルド > ビルドのメタデータ > dSYMをダウンロード
または Fastlane でダウンロードする。↑参照。 -
ターミナルで otonari-iOS ディレクトリに移動し、 CocoaPods でインストールした FirebaseCrashlytics の以下コマンドを使ってアップロードする。
# Fastlane でダウンロードしたdSYM指定
$ find fastlane/appDsyms -type f -name "*.dSYM.zip" | xargs -I {} Pods/FirebaseCrashlytics/upload-symbols -gsp otonari-iOS/Resources/Plists/GoogleService-Info-Release.plist -p ios {}
# or 直接指定
$ Pods/FirebaseCrashlytics/upload-symbols -gsp otonari-iOS/Resources/Plists/GoogleService-Info-Release.plist -p ios 'fastlane/appDsyms/love.otonari-2.8.0-1961.dSYM.zip'
# ブラウザでダウンロードしたdSYM指定
$ Pods/FirebaseCrashlytics/upload-symbols -gsp otonari-iOS/Resources/Plists/GoogleService-Info-Release.plist -p ios ~/Downloads/appDsyms
Fastlane のアップデート
定期的に行う
$ bundle update fastlane