# Prevent Fastlane from overwriting README.md skip_docs default_platform(:ios) def suppress_output original_stdout, original_stderr = $stdout.clone, $stderr.clone $stderr.reopen File.new('/dev/null', 'w') $stdout.reopen File.new('/dev/null', 'w') yield ensure $stdout.reopen original_stdout $stderr.reopen original_stderr end # This should be run after running # flutter build ios --release --no-codesign # to build the app using the Flutter toolchain. This lane is meant to only # rebuild the app by: # 1- Signing using the publishing credentials; and # 2- xcodebuild with archive option platform :ios do desc 'Push a new release to TestFlight' lane :build_and_deploy_testflight do # Doesn't do anything when not on Travis. setup_travis # Relative to this file. raw_version = File.read('../../../../version') puts "Building and deploying version #{raw_version}..." update_app_identifier( plist_path: 'Runner/Info.plist', # Let the checked-in bundle ID be different so users don't collide on # provisioning profile creation when building locally. app_identifier: 'io.flutter.demo.gallery' ) increment_version_number( # Only major, minor, patch digits and dots. version_number: /\d+\.\d+\.\d+/.match(raw_version)[0] ) puts 'Retrieving signing certificates and profiles...' # Stop fastlane from echoing back PUBLISHING_MATCH_CERTIFICATE_REPO var. suppress_output { # Retrieves all the necessary certs and provisioning profiles. sync_code_signing( git_url: ENV['PUBLISHING_MATCH_CERTIFICATE_REPO'], type: 'appstore', readonly: true ) } puts 'Certificates and profiles installed' # Modify the Xcode project to use the new team and profile. # It will put the git state to dirty but Travis will be wiped after # then run session. disable_automatic_code_signing update_project_provisioning( xcodeproj: 'Runner.xcodeproj', target_filter: 'Runner', build_configuration: 'Release', profile: ENV['sigh_io.flutter.demo.gallery_appstore_profile-path'], ) # Build and archive the app again. build_ios_app( workspace: 'Runner.xcworkspace', scheme: 'Runner', export_method: 'app-store', # Verify that the right signing identity is used for publishing. codesigning_identity: 'iPhone Distribution: Store Ladd (S8QB4VV633)', ) upload_to_testflight end end