# This file contains the fastlane.tools configuration # You can find the documentation at https://docs.fastlane.tools # # For a list of all available actions, check out # # https://docs.fastlane.tools/actions # # For a list of all available plugins, check out # # https://docs.fastlane.tools/plugins/available-plugins # # Uncomment the line if you want fastlane to automatically update itself # update_fastlane default_platform(:ios) platform :ios do desc "Push a new beta build to TestFlight" lane :beta do UI.message "Current working directory: #{Dir.pwd}" UI.message "Checking API key file..." possible_paths = [ "../AuthKey.p8", "./AuthKey.p8", "../../AuthKey.p8", File.expand_path("../AuthKey.p8"), File.expand_path("./AuthKey.p8") ] auth_key_path = nil possible_paths.each do |path| if File.exist?(path) UI.message "Found AuthKey.p8 at: #{path}" auth_key_path = File.expand_path(path) break end end if auth_key_path.nil? UI.user_error!("API key file not found. Tried paths: #{possible_paths.join(', ')}") end UI.message "Using auth_key_path: #{auth_key_path}" # Configure Flutter for release mode UI.message "Configuring Flutter for release mode..." sh("cd .. && flutter build ios --config-only --release") match(type: "appstore", readonly: true) increment_build_number(xcodeproj: "Runner.xcodeproj") build_app( workspace: "Runner.xcworkspace", scheme: "Runner", export_method: "app-store", codesigning_identity: "Apple Distribution", ) app_store_connect_api_key( key_id: "325JS9JCZH", issuer_id: "dfa27d1d-2bb8-4d4d-847e-0b32f9b880b3", key_filepath: auth_key_path, duration: 1200, in_house: false ) begin upload_to_testflight( skip_waiting_for_build_processing: true, skip_submission: true, distribute_external: false, notify_external_testers: false, changelog: "TestFlight build #{get_build_number(xcodeproj: 'Runner.xcodeproj')}", verbose: true ) rescue => ex UI.error "Upload to TestFlight failed: #{ex.message}" UI.error "Full error: #{ex.backtrace.join("\n")}" raise ex end end end