fastlane 2.173.0 → 2.178.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +82 -82
- data/cert/lib/cert/options.rb +2 -2
- data/cert/lib/cert/runner.rb +1 -1
- data/deliver/lib/deliver/app_screenshot.rb +6 -2
- data/deliver/lib/deliver/options.rb +2 -2
- data/deliver/lib/deliver/runner.rb +8 -4
- data/deliver/lib/deliver/upload_metadata.rb +3 -3
- data/deliver/lib/deliver/upload_screenshots.rb +12 -11
- data/fastlane/lib/fastlane/actions/adb.rb +1 -1
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +3 -3
- data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +6 -2
- data/fastlane/lib/fastlane/actions/appaloosa.rb +7 -2
- data/fastlane/lib/fastlane/actions/appetize.rb +13 -1
- data/fastlane/lib/fastlane/actions/backup_file.rb +1 -1
- data/fastlane/lib/fastlane/actions/build_and_upload_to_appetize.rb +10 -2
- data/fastlane/lib/fastlane/actions/carthage.rb +22 -0
- data/fastlane/lib/fastlane/actions/cocoapods.rb +15 -1
- data/fastlane/lib/fastlane/actions/commit_github_file.rb +11 -1
- data/fastlane/lib/fastlane/actions/create_xcframework.rb +5 -0
- data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +1 -1
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -1
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +8 -2
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +5 -15
- data/fastlane/lib/fastlane/actions/get_github_release.rb +11 -1
- data/fastlane/lib/fastlane/actions/git_commit.rb +1 -1
- data/fastlane/lib/fastlane/actions/github_api.rb +2 -1
- data/fastlane/lib/fastlane/actions/increment_build_number.rb +8 -1
- data/fastlane/lib/fastlane/actions/jazzy.rb +10 -1
- data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +2 -2
- data/fastlane/lib/fastlane/actions/push_to_git_remote.rb +1 -2
- data/fastlane/lib/fastlane/actions/register_device.rb +3 -3
- data/fastlane/lib/fastlane/actions/register_devices.rb +3 -3
- data/fastlane/lib/fastlane/actions/restore_file.rb +1 -1
- data/fastlane/lib/fastlane/actions/set_changelog.rb +3 -3
- data/fastlane/lib/fastlane/actions/swiftlint.rb +1 -1
- data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +1 -1
- data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +4 -5
- data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +5 -1
- data/fastlane/lib/fastlane/documentation/actions_list.rb +2 -2
- data/fastlane/lib/fastlane/erb_template_helper.rb +7 -1
- data/fastlane/lib/fastlane/fast_file.rb +9 -5
- data/fastlane/lib/fastlane/helper/adb_helper.rb +1 -1
- data/fastlane/lib/fastlane/helper/gem_helper.rb +2 -2
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Actions.swift +1 -1
- data/fastlane/swift/Appfile.swift +1 -1
- data/fastlane/swift/ArgumentProcessor.swift +1 -1
- data/fastlane/swift/ControlCommand.swift +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +1 -1
- data/fastlane/swift/Fastlane.swift +71 -27
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +1 -1
- data/fastlane/swift/LaneFileProtocol.swift +1 -1
- data/fastlane/swift/MainProcess.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +1 -1
- data/fastlane/swift/Plugins.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
- data/fastlane/swift/RubyCommand.swift +1 -1
- data/fastlane/swift/RubyCommandable.swift +1 -1
- data/fastlane/swift/Runner.swift +2 -2
- data/fastlane/swift/RunnerArgument.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +9 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
- data/fastlane/swift/SocketClient.swift +1 -1
- data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
- data/fastlane/swift/SocketResponse.swift +1 -1
- data/fastlane/swift/formatting/Brewfile.lock.json +20 -14
- data/fastlane/swift/main.swift +1 -1
- data/fastlane_core/lib/fastlane_core.rb +1 -0
- data/fastlane_core/lib/fastlane_core/command_executor.rb +3 -9
- data/fastlane_core/lib/fastlane_core/configuration/commander_generator.rb +1 -1
- data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +23 -0
- data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +9 -5
- data/fastlane_core/lib/fastlane_core/helper.rb +26 -5
- data/fastlane_core/lib/fastlane_core/ipa_upload_package_builder.rb +3 -2
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +14 -8
- data/fastlane_core/lib/fastlane_core/keychain_importer.rb +1 -1
- data/fastlane_core/lib/fastlane_core/pkg_upload_package_builder.rb +3 -2
- data/fastlane_core/lib/fastlane_core/project.rb +23 -20
- data/{deliver/lib/deliver → fastlane_core/lib/fastlane_core}/queue_worker.rb +2 -2
- data/fastlane_core/lib/fastlane_core/ui/interface.rb +1 -1
- data/fastlane_core/lib/fastlane_core/update_checker/update_checker.rb +2 -2
- data/gym/lib/gym/.runner.rb.swp +0 -0
- data/gym/lib/gym/generators/.package_command_generator_xcode7.rb.swp +0 -0
- data/match/lib/match/importer.rb +1 -1
- data/match/lib/match/migrate.rb +1 -1
- data/match/lib/match/nuke.rb +6 -1
- data/match/lib/match/options.rb +2 -2
- data/match/lib/match/runner.rb +1 -1
- data/match/lib/match/storage/google_cloud_storage.rb +1 -1
- data/match/lib/match/storage/s3_storage.rb +1 -1
- data/pilot/lib/pilot/build_manager.rb +25 -8
- data/pilot/lib/pilot/manager.rb +1 -1
- data/pilot/lib/pilot/options.rb +5 -5
- data/precheck/lib/precheck/options.rb +2 -2
- data/precheck/lib/precheck/runner.rb +2 -2
- data/scan/lib/scan/detect_values.rb +4 -1
- data/scan/lib/scan/options.rb +10 -0
- data/scan/lib/scan/runner.rb +27 -0
- data/screengrab/lib/screengrab/android_environment.rb +2 -2
- data/screengrab/lib/screengrab/runner.rb +1 -2
- data/sigh/lib/sigh/download_all.rb +1 -1
- data/sigh/lib/sigh/options.rb +2 -2
- data/sigh/lib/sigh/runner.rb +1 -1
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +2 -1
- data/spaceship/README.md +2 -2
- data/spaceship/lib/spaceship/client.rb +18 -17
- data/spaceship/lib/spaceship/connect_api/api_client.rb +40 -7
- data/spaceship/lib/spaceship/connect_api/models/app.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/app_preview_set.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +6 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/build.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/build_beta_detail.rb +4 -0
- data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +24 -0
- data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +26 -4
- data/spaceship/lib/spaceship/connect_api/models/user_invitation.rb +13 -0
- data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +53 -0
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +13 -0
- data/spaceship/lib/spaceship/connect_api/token.rb +2 -2
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +15 -0
- data/spaceship/lib/spaceship/playground.rb +2 -2
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +2 -2
- data/spaceship/lib/spaceship/two_step_or_factor_client.rb +42 -29
- metadata +38 -22
@@ -1,4 +1,5 @@
|
|
1
1
|
require "digest/md5"
|
2
|
+
require 'securerandom'
|
2
3
|
|
3
4
|
require_relative 'globals'
|
4
5
|
require_relative 'ui/ui'
|
@@ -12,7 +13,7 @@ module FastlaneCore
|
|
12
13
|
attr_accessor :package_path
|
13
14
|
|
14
15
|
def generate(app_id: nil, ipa_path: nil, package_path: nil, platform: nil)
|
15
|
-
self.package_path = File.join(package_path, "#{app_id}.itmsp")
|
16
|
+
self.package_path = File.join(package_path, "#{app_id}-#{SecureRandom.uuid}.itmsp")
|
16
17
|
FileUtils.rm_rf(self.package_path) if File.directory?(self.package_path)
|
17
18
|
FileUtils.mkdir_p(self.package_path)
|
18
19
|
|
@@ -32,7 +33,7 @@ module FastlaneCore
|
|
32
33
|
File.write(File.join(self.package_path, METADATA_FILE_NAME), xml)
|
33
34
|
UI.success("Wrote XML data to '#{self.package_path}'") if FastlaneCore::Globals.verbose?
|
34
35
|
|
35
|
-
return package_path
|
36
|
+
return self.package_path
|
36
37
|
end
|
37
38
|
|
38
39
|
def unique_ipa_path(ipa_path)
|
@@ -94,6 +94,10 @@ module FastlaneCore
|
|
94
94
|
return exit_status.zero?
|
95
95
|
end
|
96
96
|
|
97
|
+
def displayable_errors
|
98
|
+
@errors.map { |error| "[Transporter Error Output]: #{error}" }.join("\n").gsub!(/"/, "")
|
99
|
+
end
|
100
|
+
|
97
101
|
private
|
98
102
|
|
99
103
|
def parse_line(line, hide_output)
|
@@ -107,7 +111,6 @@ module FastlaneCore
|
|
107
111
|
|
108
112
|
elsif line =~ ERROR_REGEX
|
109
113
|
@errors << $1
|
110
|
-
UI.error("[Transporter Error Output]: #{$1}")
|
111
114
|
|
112
115
|
# Check if it's a login error
|
113
116
|
if $1.include?("Your Apple ID or password was entered incorrectly") ||
|
@@ -117,9 +120,6 @@ module FastlaneCore
|
|
117
120
|
CredentialsManager::AccountManager.new(user: @user).invalid_credentials
|
118
121
|
UI.error("Please run this tool again to apply the new password")
|
119
122
|
end
|
120
|
-
elsif $1.include?("Redundant Binary Upload. There already exists a binary upload with build")
|
121
|
-
UI.error($1)
|
122
|
-
UI.error("You have to change the build number of your app to upload your ipa file")
|
123
123
|
end
|
124
124
|
|
125
125
|
output_done = true
|
@@ -471,11 +471,13 @@ module FastlaneCore
|
|
471
471
|
# Uploads the modified package back to App Store Connect
|
472
472
|
# @param app_id [Integer] The unique App ID
|
473
473
|
# @param dir [String] the path in which the package file is located
|
474
|
+
# @param package_path [String] the path to the package file (used instead of app_id and dir)
|
474
475
|
# @return (Bool) True if everything worked fine
|
475
476
|
# @raise [Deliver::TransporterTransferError] when something went wrong
|
476
477
|
# when transferring
|
477
|
-
def upload(app_id, dir)
|
478
|
-
|
478
|
+
def upload(app_id = nil, dir = nil, package_path: nil)
|
479
|
+
raise "app_id and dir are required or package_path is required" if (app_id.nil? || dir.nil?) && package_path.nil?
|
480
|
+
actual_dir = package_path || File.join(dir, "#{app_id}.itmsp")
|
479
481
|
|
480
482
|
UI.message("Going to upload updated app to App Store Connect")
|
481
483
|
UI.success("This might take a few minutes. Please don't interrupt the script.")
|
@@ -490,7 +492,7 @@ module FastlaneCore
|
|
490
492
|
result = @transporter_executor.execute(command, ItunesTransporter.hide_transporter_output?)
|
491
493
|
rescue TransporterRequiresApplicationSpecificPasswordError => ex
|
492
494
|
handle_two_step_failure(ex)
|
493
|
-
return upload(app_id, dir)
|
495
|
+
return upload(app_id, dir, package_path: package_path)
|
494
496
|
end
|
495
497
|
|
496
498
|
if result
|
@@ -501,7 +503,11 @@ module FastlaneCore
|
|
501
503
|
handle_error(@password)
|
502
504
|
end
|
503
505
|
|
504
|
-
result
|
506
|
+
return result
|
507
|
+
end
|
508
|
+
|
509
|
+
def displayable_errors
|
510
|
+
@transporter_executor.displayable_errors
|
505
511
|
end
|
506
512
|
|
507
513
|
def provider_ids
|
@@ -99,7 +99,7 @@ module FastlaneCore
|
|
99
99
|
UI.important("Enter the password for #{keychain_path}")
|
100
100
|
UI.important("This passphrase will be stored in your local keychain with the name #{server} and used in future runs")
|
101
101
|
UI.important("This prompt can be avoided by specifying the 'keychain_password' option or 'MATCH_KEYCHAIN_PASSWORD' environment variable")
|
102
|
-
keychain_password = FastlaneCore::Helper.ask_password(message: "Password for #{keychain_name} keychain: ", confirm: true)
|
102
|
+
keychain_password = FastlaneCore::Helper.ask_password(message: "Password for #{keychain_name} keychain: ", confirm: true, confirmation_message: "Type password for #{keychain_name} keychain again: ")
|
103
103
|
Security::InternetPassword.add(server, "", keychain_password)
|
104
104
|
else
|
105
105
|
UI.important("Keychain password for #{keychain_path} was not specified and not found in your keychain. Specify the 'keychain_password' option to prevent the UI permission popup when code signing")
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'digest/md5'
|
2
|
+
require 'securerandom'
|
2
3
|
|
3
4
|
require_relative 'globals'
|
4
5
|
require_relative 'ui/ui'
|
@@ -12,7 +13,7 @@ module FastlaneCore
|
|
12
13
|
attr_accessor :package_path
|
13
14
|
|
14
15
|
def generate(app_id: nil, pkg_path: nil, package_path: nil, platform: "osx")
|
15
|
-
self.package_path = File.join(package_path, "#{app_id}.itmsp")
|
16
|
+
self.package_path = File.join(package_path, "#{app_id}-#{SecureRandom.uuid}.itmsp")
|
16
17
|
FileUtils.rm_rf(self.package_path) if File.directory?(self.package_path)
|
17
18
|
FileUtils.mkdir_p(self.package_path)
|
18
19
|
|
@@ -32,7 +33,7 @@ module FastlaneCore
|
|
32
33
|
File.write(File.join(self.package_path, METADATA_FILE_NAME), xml)
|
33
34
|
UI.success("Wrote XML data to '#{self.package_path}'") if FastlaneCore::Globals.verbose?
|
34
35
|
|
35
|
-
package_path
|
36
|
+
return self.package_path
|
36
37
|
end
|
37
38
|
|
38
39
|
private
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require_relative 'helper'
|
2
2
|
require 'xcodeproj'
|
3
|
+
require_relative './configuration/configuration'
|
3
4
|
require 'fastlane_core/command_executor'
|
4
5
|
|
5
6
|
module FastlaneCore
|
@@ -67,28 +68,32 @@ module FastlaneCore
|
|
67
68
|
# Is this project a workspace?
|
68
69
|
attr_accessor :is_workspace
|
69
70
|
|
70
|
-
#
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
# Gets rid of annoying plugin info warnings.
|
78
|
-
attr_accessor :xcodebuild_suppress_stderr
|
79
|
-
|
80
|
-
def initialize(options, xcodebuild_list_silent: false, xcodebuild_suppress_stderr: false)
|
81
|
-
self.options = options
|
82
|
-
self.path = File.expand_path(options[:workspace] || options[:project])
|
83
|
-
self.is_workspace = (options[:workspace].to_s.length > 0)
|
84
|
-
self.xcodebuild_list_silent = xcodebuild_list_silent
|
85
|
-
self.xcodebuild_suppress_stderr = xcodebuild_suppress_stderr
|
71
|
+
# @param options [FastlaneCore::Configuration|Hash] a set of configuration to run xcodebuild to work out build settings
|
72
|
+
# @param xcodebuild_list_silent [Boolean] a flag to silent xcodebuild command's output
|
73
|
+
# @param xcodebuild_suppress_stderr [Boolean] a flag to supress output to stderr from xcodebuild
|
74
|
+
def initialize(options)
|
75
|
+
@options = options
|
76
|
+
@path = File.expand_path(self.options[:workspace] || self.options[:project])
|
77
|
+
@is_workspace = (self.options[:workspace].to_s.length > 0)
|
86
78
|
|
87
79
|
if !path || !File.directory?(path)
|
88
80
|
UI.user_error!("Could not find project at path '#{path}'")
|
89
81
|
end
|
90
82
|
end
|
91
83
|
|
84
|
+
# @return [Hash] a hash object containing project, workspace, scheme, any configuration related to xcodebuild, or etc...
|
85
|
+
def options
|
86
|
+
# To keep compatibility with actions using this class from outside of `fastlane` gem; i.e. `xcov`,
|
87
|
+
# converts `options` to a plain Hash. Otherwise, it might crash when a new option's key is added
|
88
|
+
# due to `FastlaneCore::Configuration` to validate valid keys defined.
|
89
|
+
@options.kind_of?(FastlaneCore::Configuration) ? @options.values : @options
|
90
|
+
end
|
91
|
+
|
92
|
+
def options=(new_value)
|
93
|
+
UI.deprecated('Update `options` is not worth doing since it can change behavior of this object entirely. Consider re-creating FastlaneCore::Project.')
|
94
|
+
@options = new_value
|
95
|
+
end
|
96
|
+
|
92
97
|
def workspace?
|
93
98
|
self.is_workspace
|
94
99
|
end
|
@@ -351,14 +356,12 @@ module FastlaneCore
|
|
351
356
|
else
|
352
357
|
command = "xcodebuild clean -showBuildSettings #{xcodebuild_parameters.join(' ')}"
|
353
358
|
end
|
354
|
-
command += " 2> /dev/null" if xcodebuild_suppress_stderr
|
355
359
|
command
|
356
360
|
end
|
357
361
|
|
358
362
|
def build_xcodebuild_resolvepackagedependencies_command
|
359
363
|
return nil if options[:skip_package_dependencies_resolution]
|
360
364
|
command = "xcodebuild -resolvePackageDependencies #{xcodebuild_parameters.join(' ')}"
|
361
|
-
command += " 2> /dev/null" if xcodebuild_suppress_stderr
|
362
365
|
command
|
363
366
|
end
|
364
367
|
|
@@ -381,7 +384,7 @@ module FastlaneCore
|
|
381
384
|
FastlaneCore::CommandExecutor.execute(
|
382
385
|
command: command,
|
383
386
|
print_all: true,
|
384
|
-
print_command:
|
387
|
+
print_command: true
|
385
388
|
)
|
386
389
|
else
|
387
390
|
UI.important("Skipped Swift Package Manager dependencies resolution.")
|
@@ -394,7 +397,7 @@ module FastlaneCore
|
|
394
397
|
begin
|
395
398
|
timeout = FastlaneCore::Project.xcode_build_settings_timeout
|
396
399
|
retries = FastlaneCore::Project.xcode_build_settings_retries
|
397
|
-
@build_settings = FastlaneCore::Project.run_command(command, timeout: timeout, retries: retries, print:
|
400
|
+
@build_settings = FastlaneCore::Project.run_command(command, timeout: timeout, retries: retries, print: true)
|
398
401
|
if @build_settings.empty?
|
399
402
|
UI.error("Could not read build settings. Make sure that the scheme \"#{options[:scheme]}\" is configured for running by going to Product → Scheme → Edit Scheme…, selecting the \"Build\" section, checking the \"Run\" checkbox and closing the scheme window.")
|
400
403
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'thread'
|
2
2
|
|
3
|
-
module
|
3
|
+
module FastlaneCore
|
4
4
|
# This dispatches jobs to worker threads and make it work in parallel.
|
5
5
|
# It's suitable for I/O bounds works and not for CPU bounds works.
|
6
6
|
# Use this when you have all the items that you'll process in advance.
|
7
7
|
# Simply enqueue them to this and call `QueueWorker#start`.
|
8
8
|
class QueueWorker
|
9
|
-
NUMBER_OF_THREADS = Helper.test? ? 1 : [ENV.fetch("
|
9
|
+
NUMBER_OF_THREADS = FastlaneCore::Helper.test? ? 1 : [(ENV["DELIVER_NUMBER_OF_THREADS"] || ENV.fetch("FL_NUMBER_OF_THREADS", 10)).to_i, 10].min
|
10
10
|
|
11
11
|
# @param concurrency (Numeric) - A number of threads to be created
|
12
12
|
# @param block (Proc) - A task you want to execute with enqueued items
|
@@ -138,7 +138,7 @@ module FastlaneCore
|
|
138
138
|
# Basically this should be used when you actively catch the error
|
139
139
|
# and want to show a nice error message to the user
|
140
140
|
def user_error!(error_message, options = {})
|
141
|
-
raise FastlaneError.new(options), error_message.to_s
|
141
|
+
raise FastlaneError.new(show_github_issues: options[:show_github_issues], error_info: options[:error_info]), error_message.to_s
|
142
142
|
end
|
143
143
|
|
144
144
|
# Use this method to exit the program because of a shell command
|
@@ -63,7 +63,7 @@ module FastlaneCore
|
|
63
63
|
if !Helper.bundler? && !Helper.contained_fastlane? && Random.rand(5) == 1
|
64
64
|
# We want to show this message from time to time, if the user doesn't use bundler, nor bundled fastlane
|
65
65
|
puts('#######################################################################')
|
66
|
-
puts("# Run `
|
66
|
+
puts("# Run `gem cleanup` from time to time to speed up fastlane")
|
67
67
|
end
|
68
68
|
puts('#######################################################################')
|
69
69
|
Changelog.show_changes(gem_name, current_version, update_gem_command: UpdateChecker.update_command(gem_name: gem_name)) unless FastlaneCore::Env.truthy?("FASTLANE_HIDE_CHANGELOG")
|
@@ -80,7 +80,7 @@ module FastlaneCore
|
|
80
80
|
elsif Helper.mac_app?
|
81
81
|
"the Fabric app. Launch the app and navigate to the fastlane tab to get the most recent version."
|
82
82
|
else
|
83
|
-
"
|
83
|
+
"gem install #{gem_name.downcase}"
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
Binary file
|
Binary file
|
data/match/lib/match/importer.rb
CHANGED
@@ -149,7 +149,7 @@ module Match
|
|
149
149
|
end
|
150
150
|
|
151
151
|
def api_token(params)
|
152
|
-
@api_token ||= Spaceship::ConnectAPI::Token.create(params[:api_key]) if params[:api_key]
|
152
|
+
@api_token ||= Spaceship::ConnectAPI::Token.create(**params[:api_key]) if params[:api_key]
|
153
153
|
@api_token ||= Spaceship::ConnectAPI::Token.from_json_file(params[:api_key_path]) if params[:api_key_path]
|
154
154
|
return @api_token
|
155
155
|
end
|
data/match/lib/match/migrate.rb
CHANGED
@@ -91,7 +91,7 @@ module Match
|
|
91
91
|
end
|
92
92
|
|
93
93
|
def api_token(params)
|
94
|
-
@api_token ||= Spaceship::ConnectAPI::Token.create(params[:api_key]) if params[:api_key]
|
94
|
+
@api_token ||= Spaceship::ConnectAPI::Token.create(**params[:api_key]) if params[:api_key]
|
95
95
|
@api_token ||= Spaceship::ConnectAPI::Token.from_json_file(params[:api_key_path]) if params[:api_key_path]
|
96
96
|
return @api_token
|
97
97
|
end
|
data/match/lib/match/nuke.rb
CHANGED
@@ -36,6 +36,11 @@ module Match
|
|
36
36
|
git_branch: params[:git_branch],
|
37
37
|
git_full_name: params[:git_full_name],
|
38
38
|
git_user_email: params[:git_user_email],
|
39
|
+
|
40
|
+
git_private_key: params[:git_private_key],
|
41
|
+
git_basic_authorization: params[:git_basic_authorization],
|
42
|
+
git_bearer_authorization: params[:git_bearer_authorization],
|
43
|
+
|
39
44
|
clone_branch_directly: params[:clone_branch_directly],
|
40
45
|
google_cloud_bucket_name: params[:google_cloud_bucket_name].to_s,
|
41
46
|
google_cloud_keys_file: params[:google_cloud_keys_file].to_s,
|
@@ -116,7 +121,7 @@ module Match
|
|
116
121
|
end
|
117
122
|
|
118
123
|
def api_token
|
119
|
-
@api_token ||= Spaceship::ConnectAPI::Token.create(params[:api_key]) if params[:api_key]
|
124
|
+
@api_token ||= Spaceship::ConnectAPI::Token.create(**params[:api_key]) if params[:api_key]
|
120
125
|
@api_token ||= Spaceship::ConnectAPI::Token.from_json_file(params[:api_key_path]) if params[:api_key_path]
|
121
126
|
return @api_token
|
122
127
|
end
|
data/match/lib/match/options.rb
CHANGED
@@ -74,7 +74,7 @@ module Match
|
|
74
74
|
|
75
75
|
# App Store Connect API
|
76
76
|
FastlaneCore::ConfigItem.new(key: :api_key_path,
|
77
|
-
|
77
|
+
env_names: ["SIGH_API_KEY_PATH", "APP_STORE_CONNECT_API_KEY_PATH"],
|
78
78
|
description: "Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)",
|
79
79
|
optional: true,
|
80
80
|
conflicting_options: [:api_key],
|
@@ -82,7 +82,7 @@ module Match
|
|
82
82
|
UI.user_error!("Couldn't find API key JSON file at path '#{value}'") unless File.exist?(value)
|
83
83
|
end),
|
84
84
|
FastlaneCore::ConfigItem.new(key: :api_key,
|
85
|
-
|
85
|
+
env_names: ["SIGH_API_KEY", "APP_STORE_CONNECT_API_KEY"],
|
86
86
|
description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)",
|
87
87
|
type: Hash,
|
88
88
|
optional: true,
|
data/match/lib/match/runner.rb
CHANGED
@@ -139,7 +139,7 @@ module Match
|
|
139
139
|
# rubocop:enable Metrics/PerceivedComplexity
|
140
140
|
|
141
141
|
def api_token(params)
|
142
|
-
@api_token ||= Spaceship::ConnectAPI::Token.create(params[:api_key]) if params[:api_key]
|
142
|
+
@api_token ||= Spaceship::ConnectAPI::Token.create(**params[:api_key]) if params[:api_key]
|
143
143
|
@api_token ||= Spaceship::ConnectAPI::Token.from_json_file(params[:api_key_path]) if params[:api_key_path]
|
144
144
|
return @api_token
|
145
145
|
end
|
@@ -123,7 +123,7 @@ module Match
|
|
123
123
|
end
|
124
124
|
|
125
125
|
def api_token
|
126
|
-
api_token ||= Spaceship::ConnectAPI::Token.create(self.api_key) if self.api_key
|
126
|
+
api_token ||= Spaceship::ConnectAPI::Token.create(**self.api_key) if self.api_key
|
127
127
|
api_token ||= Spaceship::ConnectAPI::Token.from_json_file(self.api_key_path) if self.api_key_path
|
128
128
|
return api_token
|
129
129
|
end
|
@@ -196,7 +196,7 @@ module Match
|
|
196
196
|
end
|
197
197
|
|
198
198
|
def api_token
|
199
|
-
api_token ||= Spaceship::ConnectAPI::Token.create(self.api_key) if self.api_key
|
199
|
+
api_token ||= Spaceship::ConnectAPI::Token.create(**self.api_key) if self.api_key
|
200
200
|
api_token ||= Spaceship::ConnectAPI::Token.from_json_file(self.api_key_path) if self.api_key_path
|
201
201
|
return api_token
|
202
202
|
end
|
@@ -31,10 +31,11 @@ module Pilot
|
|
31
31
|
platform: platform)
|
32
32
|
|
33
33
|
transporter = transporter_for_selected_team(options)
|
34
|
-
result = transporter.upload(
|
34
|
+
result = transporter.upload(package_path: package_path)
|
35
35
|
|
36
36
|
unless result
|
37
|
-
|
37
|
+
transporter_errors = transporter.displayable_errors
|
38
|
+
UI.user_error!("Error uploading ipa file: \n #{transporter_errors}")
|
38
39
|
end
|
39
40
|
|
40
41
|
UI.success("Successfully uploaded the new binary to App Store Connect")
|
@@ -90,8 +91,13 @@ module Pilot
|
|
90
91
|
|
91
92
|
def wait_for_build_processing_to_be_complete(return_when_build_appears = false)
|
92
93
|
platform = fetch_app_platform
|
93
|
-
|
94
|
-
|
94
|
+
if config[:ipa]
|
95
|
+
app_version = FastlaneCore::IpaFileAnalyser.fetch_app_version(config[:ipa])
|
96
|
+
app_build = FastlaneCore::IpaFileAnalyser.fetch_app_build(config[:ipa])
|
97
|
+
else
|
98
|
+
app_version = config[:app_version]
|
99
|
+
app_build = config[:build_number]
|
100
|
+
end
|
95
101
|
|
96
102
|
latest_build = FastlaneCore::BuildWatcher.wait_for_build_processing_to_be_complete(
|
97
103
|
app_id: app.id,
|
@@ -248,9 +254,13 @@ module Pilot
|
|
248
254
|
end
|
249
255
|
end
|
250
256
|
|
251
|
-
|
252
|
-
|
253
|
-
|
257
|
+
if options[:notify_external_testers].nil?
|
258
|
+
UI.important("Using App Store Connect's default for notifying external testers (which is true) - set `notify_external_testers` for full control")
|
259
|
+
else
|
260
|
+
update_build_beta_details(build, {
|
261
|
+
auto_notify_enabled: options[:notify_external_testers]
|
262
|
+
})
|
263
|
+
end
|
254
264
|
end
|
255
265
|
|
256
266
|
def self.truncate_changelog(changelog)
|
@@ -423,7 +433,14 @@ module Pilot
|
|
423
433
|
|
424
434
|
UI.important("Export compliance has been set to '#{uses_non_exempt_encryption}'. Need to wait for build to finishing processing again...")
|
425
435
|
UI.important("Set 'ITSAppUsesNonExemptEncryption' in the 'Info.plist' to skip this step and speed up the submission")
|
426
|
-
|
436
|
+
|
437
|
+
loop do
|
438
|
+
build = Spaceship::ConnectAPI::Build.get(build_id: uploaded_build.id)
|
439
|
+
return build unless build.missing_export_compliance?
|
440
|
+
|
441
|
+
UI.message("Waiting for build #{uploaded_build.id} to process export compliance")
|
442
|
+
sleep(5)
|
443
|
+
end
|
427
444
|
else
|
428
445
|
return uploaded_build
|
429
446
|
end
|
data/pilot/lib/pilot/manager.rb
CHANGED
@@ -30,7 +30,7 @@ module Pilot
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def api_token
|
33
|
-
@api_token ||= Spaceship::ConnectAPI::Token.create(config[:api_key]) if config[:api_key]
|
33
|
+
@api_token ||= Spaceship::ConnectAPI::Token.create(**config[:api_key]) if config[:api_key]
|
34
34
|
@api_token ||= Spaceship::ConnectAPI::Token.from_json_file(config[:api_key_path]) if config[:api_key_path]
|
35
35
|
return @api_token
|
36
36
|
end
|
data/pilot/lib/pilot/options.rb
CHANGED
@@ -11,7 +11,7 @@ module Pilot
|
|
11
11
|
|
12
12
|
[
|
13
13
|
FastlaneCore::ConfigItem.new(key: :api_key_path,
|
14
|
-
|
14
|
+
env_names: ["PILOT_API_KEY_PATH", "APP_STORE_CONNECT_API_KEY_PATH"],
|
15
15
|
description: "Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)",
|
16
16
|
optional: true,
|
17
17
|
conflicting_options: [:username],
|
@@ -19,7 +19,7 @@ module Pilot
|
|
19
19
|
UI.user_error!("Couldn't find API key JSON file at path '#{value}'") unless File.exist?(value)
|
20
20
|
end),
|
21
21
|
FastlaneCore::ConfigItem.new(key: :api_key,
|
22
|
-
|
22
|
+
env_names: ["PILOT_API_KEY", "APP_STORE_CONNECT_API_KEY"],
|
23
23
|
description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)",
|
24
24
|
type: Hash,
|
25
25
|
optional: true,
|
@@ -88,7 +88,7 @@ module Pilot
|
|
88
88
|
type: Boolean,
|
89
89
|
env_name: "DEMO_ACCOUNT_REQUIRED",
|
90
90
|
description: "Do you need a demo account when Apple does review?",
|
91
|
-
|
91
|
+
optional: true),
|
92
92
|
FastlaneCore::ConfigItem.new(key: :beta_app_review_info,
|
93
93
|
type: Hash,
|
94
94
|
env_name: "PILOT_BETA_APP_REVIEW_INFO",
|
@@ -182,8 +182,8 @@ module Pilot
|
|
182
182
|
FastlaneCore::ConfigItem.new(key: :notify_external_testers,
|
183
183
|
is_string: false,
|
184
184
|
env_name: "PILOT_NOTIFY_EXTERNAL_TESTERS",
|
185
|
-
description: "Should notify external testers?",
|
186
|
-
|
185
|
+
description: "Should notify external testers? (Not setting a value will use App Store Connect's default which is to notify)",
|
186
|
+
optional: true),
|
187
187
|
FastlaneCore::ConfigItem.new(key: :app_version,
|
188
188
|
env_name: "PILOT_APP_VERSION",
|
189
189
|
description: "The version number of the application build to distribute. If the version number is not specified, then the most recent build uploaded to TestFlight will be distributed. If specified, the most recent build for the version number will be distributed",
|