fastlaneとは
iOSやAndroidアプリのベータ版の導入やリリース、配布、ビルド等すべての面倒な作業を自動化してくれるRuby製のツール
今回はFabric Crashlytics Betaにアップロードしてslackに通知するまでをメモがてら記載
fastlaneのインストール
Xcodeコマンドラインツールの最新バージョンがインストールされていることを確認
xcode-select --install
fastlaneをインストール
[sudo] gem install fastlane
プロジェクトルートで実行
fastlane init
Actions
アクション一覧の表示
$ fastlane actions
... Total of 213 actions
今回使用するAction
Action | 説明 |
---|---|
prompt | ユーザーに値や確認を求める |
gym | アプリをビルドする。build_ios_appアクションのエイリアス |
crashlytics | Crashlytics Betaに新しいビルドをアップロードする |
upload_symbols_to_crashlytics | dSYMシンボルファイルをCrashlyticsにアップロードする |
slack | slackにsuccess/errorメッセージを送信する |
puts | ログ出力する(主にデバッグに使用) |
Fabric Crashlytics Betaにアップロード
platform :ios do
before_all do
# Crashlyticsの設定
ENV['CRASHLYTICS_API_TOKEN'] = "xxxxx"
ENV['CRASHLYTICS_BUILD_SECRET'] = "xxxxx"
end
desc "Upload to Fabric"
lane :beta
# リリースノートの入力
releaseNotes = prompt(
text: "Release Notes: ",
multi_line_end_keyword: "end"
)
# ipaの作成
gym(
scheme: "scheme",
export_method: "ad-hoc",
export_xcargs: "-allowProvisioningUpdates",
export_options: { compileBitcode: false }
)
# Crashlytics Betaにアップロード
crashlytics(
crashlytics_path: "./****/Crashlytics.framework/",
notes: "#{releaseNotes}\n#{Time.new.to_s}", # リリースノート
groups: ['fabric-group-'], # 必要であれ配信先のグループ名を記載
ipa_path: "./xxx.ipa"
)
# dSYMシンボルファイルをCrashlyticsにアップロード
upload_symbols_to_crashlytics
end
end
slackに通知
before_all do
# Slackの設定
ENV["SLACK_URL"] = "https://hooks.slack.com/services/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"
end
lane :notify_slack do |options|
slack(
success: options[:success] ? true : false,
message: options[:message],
payload: { "Build Date" => Time.new.to_s },
default_payloads: [:lane, :test_result, :git_branch, :git_author],
)
end
# laneの処理が終了したときに呼ばれる
after_all do |lane|
if lane == :beta
notify_slack(success: true, message: ":star2: Successfully upload to Fabric")
end
end
# エラーのときに呼ばれる
error do |lane, exception|
if lane == :beta
notify_slack(success: false, message: ":face_with_rolling_eyes: #{exception.message}")
end
end
お次は
Bitriseと連携してマージしたらアップロードをやってみる(いつか)