| # 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 |options| |
| # 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)', |
| ) |
| |
| if options[:upload] |
| upload_to_testflight |
| end |
| end |
| end |