LoginSignup
4
3

More than 5 years have passed since last update.

fastlaneを使ってFabric Crashlytics Betaにアップロードしてslackに通知

Posted at

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と連携してマージしたらアップロードをやってみる(いつか)

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3