fastlane 2.135.0 → 2.138.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 +78 -78
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +1 -1
- data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +38 -4
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +19 -0
- data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +4 -2
- data/fastlane/lib/fastlane/actions/ensure_bundle_exec.rb +3 -3
- data/fastlane/lib/fastlane/actions/get_version_number.rb +7 -2
- data/fastlane/lib/fastlane/actions/google_play_track_version_codes.rb +5 -1
- data/fastlane/lib/fastlane/actions/gradle.rb +11 -1
- data/fastlane/lib/fastlane/actions/increment_version_number.rb +6 -3
- data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +2 -2
- data/fastlane/lib/fastlane/actions/register_devices.rb +5 -1
- data/fastlane/lib/fastlane/actions/ruby_version.rb +1 -1
- data/fastlane/lib/fastlane/actions/testfairy.rb +8 -1
- data/fastlane/lib/fastlane/actions/verify_build.rb +1 -1
- data/fastlane/lib/fastlane/actions/xcode_select.rb +6 -1
- data/fastlane/lib/fastlane/cli_tools_distributor.rb +2 -2
- data/fastlane/lib/fastlane/commands_generator.rb +1 -1
- data/fastlane/lib/fastlane/helper/adb_helper.rb +13 -4
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +1 -0
- data/fastlane/lib/fastlane/swift_fastlane_function.rb +9 -0
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +47 -17
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +6 -2
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/ScreengrabfileProtocol.swift +14 -2
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane_core/lib/fastlane_core/helper.rb +1 -1
- data/match/lib/match/options.rb +8 -0
- data/match/lib/match/runner.rb +1 -0
- data/match/lib/match/storage/git_storage.rb +7 -2
- data/screengrab/lib/screengrab/module.rb +2 -0
- data/screengrab/lib/screengrab/options.rb +24 -11
- data/screengrab/lib/screengrab/runner.rb +79 -42
- data/spaceship/lib/spaceship/client.rb +9 -4
- data/spaceship/lib/spaceship/connect_api.rb +2 -0
- data/spaceship/lib/spaceship/connect_api/models/app.rb +11 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_feedback.rb +71 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_screenshot.rb +18 -0
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +9 -0
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +2 -5
- data/supply/lib/supply/client.rb +1 -0
- data/supply/lib/supply/options.rb +9 -2
- data/supply/lib/supply/uploader.rb +63 -39
- metadata +22 -24
- data/gym/lib/gym/.module.rb.swp +0 -0
- data/supply/lib/supply/.client.rb.swp +0 -0
- data/supply/lib/supply/.options.rb.swp +0 -0
- data/supply/lib/supply/.uploader.rb.swp +0 -0
@@ -43,6 +43,9 @@ module Fastlane
|
|
43
43
|
version_array = current_version.split(".").map(&:to_i)
|
44
44
|
|
45
45
|
case params[:bump_type]
|
46
|
+
when "bump"
|
47
|
+
version_array[-1] = version_array[-1] + 1
|
48
|
+
next_version_number = version_array.join(".")
|
46
49
|
when "patch"
|
47
50
|
UI.user_error!(version_token_error) if version_array.count < 3
|
48
51
|
version_array[2] = version_array[2] + 1
|
@@ -109,9 +112,9 @@ module Fastlane
|
|
109
112
|
FastlaneCore::ConfigItem.new(key: :bump_type,
|
110
113
|
env_name: "FL_VERSION_NUMBER_BUMP_TYPE",
|
111
114
|
description: "The type of this version bump. Available: patch, minor, major",
|
112
|
-
default_value: "
|
115
|
+
default_value: "bump",
|
113
116
|
verify_block: proc do |value|
|
114
|
-
UI.user_error!("Available values are 'patch', 'minor' and 'major'") unless ['patch', 'minor', 'major'].include?(value)
|
117
|
+
UI.user_error!("Available values are 'patch', 'minor' and 'major'") unless ['bump', 'patch', 'minor', 'major'].include?(value)
|
115
118
|
end),
|
116
119
|
FastlaneCore::ConfigItem.new(key: :version_number,
|
117
120
|
env_name: "FL_VERSION_NUMBER_VERSION_NUMBER",
|
@@ -148,7 +151,7 @@ module Fastlane
|
|
148
151
|
|
149
152
|
def self.example_code
|
150
153
|
[
|
151
|
-
'increment_version_number # Automatically increment
|
154
|
+
'increment_version_number # Automatically increment version number',
|
152
155
|
'increment_version_number(
|
153
156
|
bump_type: "patch" # Automatically increment patch version number
|
154
157
|
)',
|
@@ -64,7 +64,7 @@ module Fastlane
|
|
64
64
|
is_string: true,
|
65
65
|
default_value: "ios",
|
66
66
|
verify_block: proc do |value|
|
67
|
-
UI.user_error!("The platform can only be ios, or appletvos") unless %('ios', 'appletvos').include?(value)
|
67
|
+
UI.user_error!("The platform can only be ios, osx, or appletvos") unless %('osx', ios', 'appletvos').include?(value)
|
68
68
|
end),
|
69
69
|
FastlaneCore::ConfigItem.new(key: :initial_build_number,
|
70
70
|
env_name: "INITIAL_BUILD_NUMBER",
|
@@ -110,7 +110,7 @@ module Fastlane
|
|
110
110
|
end
|
111
111
|
|
112
112
|
def self.is_supported?(platform)
|
113
|
-
|
113
|
+
[:ios, :mac].include?(platform)
|
114
114
|
end
|
115
115
|
|
116
116
|
def self.example_code
|
@@ -25,7 +25,11 @@ module Fastlane
|
|
25
25
|
end
|
26
26
|
|
27
27
|
new_devices = devices_file.drop(1).map do |row|
|
28
|
-
|
28
|
+
if row.count == 1
|
29
|
+
UI.user_error!("Invalid device line, ensure you are using tabs (NOT spaces). See Apple's sample/spec here: https://developer.apple.com/account/resources/downloads/Multiple-Upload-Samples.zip")
|
30
|
+
elsif !(2..3).cover?(row.count)
|
31
|
+
UI.user_error!("Invalid device line, please provide a file according to the Apple Sample UDID file (https://developer.apple.com/account/resources/downloads/Multiple-Upload-Samples.zip)")
|
32
|
+
end
|
29
33
|
row
|
30
34
|
end
|
31
35
|
else
|
@@ -40,7 +40,7 @@ module Fastlane
|
|
40
40
|
def self.details
|
41
41
|
[
|
42
42
|
"Add this to your `Fastfile` to require a certain version of _ruby_.",
|
43
|
-
"Put it at the top of your `Fastfile to ensure that _fastlane_ is executed appropriately."
|
43
|
+
"Put it at the top of your `Fastfile` to ensure that _fastlane_ is executed appropriately."
|
44
44
|
].join("\n")
|
45
45
|
end
|
46
46
|
|
@@ -92,6 +92,8 @@ module Fastlane
|
|
92
92
|
[key, value]
|
93
93
|
when :options
|
94
94
|
[key, options_to_client.call(value).join(',')]
|
95
|
+
when :custom
|
96
|
+
[key, value]
|
95
97
|
else
|
96
98
|
UI.user_error!("Unknown parameter: #{key}")
|
97
99
|
end
|
@@ -223,6 +225,11 @@ module Fastlane
|
|
223
225
|
env_name: "FL_TESTFAIRY_OPTIONS",
|
224
226
|
description: "Array of options (shake,video_only_wifi,anonymous)",
|
225
227
|
default_value: []),
|
228
|
+
FastlaneCore::ConfigItem.new(key: :custom,
|
229
|
+
optional: true,
|
230
|
+
env_name: "FL_TESTFAIRY_CUSTOM",
|
231
|
+
description: "Array of custom options. Contact support@testfairy.com for more information",
|
232
|
+
default_value: ''),
|
226
233
|
FastlaneCore::ConfigItem.new(key: :timeout,
|
227
234
|
env_name: "FL_TESTFAIRY_TIMEOUT",
|
228
235
|
description: "Request timeout in seconds",
|
@@ -252,7 +259,7 @@ module Fastlane
|
|
252
259
|
end
|
253
260
|
|
254
261
|
def self.authors
|
255
|
-
["taka0125", "tcurdt"]
|
262
|
+
["taka0125", "tcurdt", "vijaysharm"]
|
256
263
|
end
|
257
264
|
|
258
265
|
def self.is_supported?(platform)
|
@@ -92,7 +92,7 @@ module Fastlane
|
|
92
92
|
|
93
93
|
def self.evaulate(params, values)
|
94
94
|
if params[:provisioning_type]
|
95
|
-
UI.user_error!("Mismatched provisioning_type. Required: '#{params[:provisioning_type]}'
|
95
|
+
UI.user_error!("Mismatched provisioning_type. Required: '#{params[:provisioning_type]}'; Found: '#{values['provisioning_type']}'") unless params[:provisioning_type] == values['provisioning_type']
|
96
96
|
end
|
97
97
|
if params[:provisioning_uuid]
|
98
98
|
UI.user_error!("Mismatched provisioning_uuid. Required: '#{params[:provisioning_uuid]}'; Found: '#{values['provisioning_uuid']}'") unless params[:provisioning_uuid] == values['provisioning_uuid']
|
@@ -38,7 +38,12 @@ module Fastlane
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def self.details
|
41
|
-
|
41
|
+
[
|
42
|
+
"Select and build with the Xcode installed at the provided path.",
|
43
|
+
"Use the `xcversion` action if you want to select an Xcode:",
|
44
|
+
"- Based on a version specifier or",
|
45
|
+
"- You don't have known, stable paths, as may happen in a CI environment."
|
46
|
+
].join("\n")
|
42
47
|
end
|
43
48
|
|
44
49
|
def self.author
|
@@ -142,8 +142,8 @@ module Fastlane
|
|
142
142
|
# Let's tell the user how to use `bundle exec`
|
143
143
|
# We show this warning no matter if the command is slow or not
|
144
144
|
UI.important("fastlane detected a Gemfile in the current directory")
|
145
|
-
UI.important("
|
146
|
-
UI.important("
|
145
|
+
UI.important("However, it seems like you didn't use `bundle exec`")
|
146
|
+
UI.important("To launch fastlane faster, please use")
|
147
147
|
UI.message("")
|
148
148
|
UI.command "bundle exec fastlane #{ARGV.join(' ')}"
|
149
149
|
UI.message("")
|
@@ -17,7 +17,7 @@ module Fastlane
|
|
17
17
|
end
|
18
18
|
FastlaneCore::Swag.show_loader
|
19
19
|
|
20
|
-
# has to be checked here - in case we
|
20
|
+
# has to be checked here - in case we want to troubleshoot plugin related issues
|
21
21
|
if ARGV.include?("--troubleshoot")
|
22
22
|
self.confirm_troubleshoot
|
23
23
|
end
|
@@ -12,21 +12,30 @@ module Fastlane
|
|
12
12
|
# Path to the adb binary
|
13
13
|
attr_accessor :adb_path
|
14
14
|
|
15
|
+
# Path to the adb binary
|
16
|
+
attr_accessor :adb_host
|
17
|
+
|
15
18
|
# All available devices
|
16
19
|
attr_accessor :devices
|
17
20
|
|
18
|
-
def initialize(adb_path: nil)
|
21
|
+
def initialize(adb_path: nil, adb_host: nil)
|
19
22
|
android_home = ENV['ANDROID_HOME'] || ENV['ANDROID_SDK_ROOT'] || ENV['ANDROID_SDK']
|
20
23
|
if (adb_path.nil? || adb_path == "adb") && android_home
|
21
24
|
adb_path = File.join(android_home, "platform-tools", "adb")
|
22
25
|
end
|
26
|
+
|
23
27
|
self.adb_path = adb_path
|
28
|
+
self.adb_host = adb_host
|
29
|
+
end
|
30
|
+
|
31
|
+
def host_option
|
32
|
+
return self.adb_host ? "-H #{adb_host}" : nil
|
24
33
|
end
|
25
34
|
|
26
35
|
# Run a certain action
|
27
36
|
def trigger(command: nil, serial: nil)
|
28
37
|
android_serial = serial != "" ? "ANDROID_SERIAL=#{serial}" : nil
|
29
|
-
command = [android_serial, adb_path.shellescape, command].join(" ").strip
|
38
|
+
command = [android_serial, adb_path.shellescape, host_option, command].compact.join(" ").strip
|
30
39
|
Action.sh(command)
|
31
40
|
end
|
32
41
|
|
@@ -43,10 +52,10 @@ module Fastlane
|
|
43
52
|
def load_all_devices
|
44
53
|
self.devices = []
|
45
54
|
|
46
|
-
command = [adb_path.shellescape, "devices"].join(" ")
|
55
|
+
command = [adb_path.shellescape, host_option, "devices -l"].compact.join(" ")
|
47
56
|
output = Actions.sh(command, log: false)
|
48
57
|
output.split("\n").each do |line|
|
49
|
-
if (result = line.match(
|
58
|
+
if (result = line.match(/^(\S+)(\s+)(device )/))
|
50
59
|
self.devices << AdbDevice.new(serial: result[1])
|
51
60
|
end
|
52
61
|
end
|
@@ -147,6 +147,7 @@ module Fastlane
|
|
147
147
|
unless default_value.nil?
|
148
148
|
if type == "[String : Any]"
|
149
149
|
# we can't handle default values for Hashes, yet
|
150
|
+
# see method swift_default_implementations for similar behavior
|
150
151
|
default_value = "[:]"
|
151
152
|
elsif type != "Bool" && type != "[String]" && type != "Int" && type != "((String) -> Void)"
|
152
153
|
default_value = "\"#{default_value}\""
|
@@ -343,6 +344,10 @@ module Fastlane
|
|
343
344
|
unless default_value.nil?
|
344
345
|
if type == "Bool" || type == "[String]" || type == "Int" || default_value.kind_of?(Array)
|
345
346
|
default_value = default_value.to_s
|
347
|
+
elsif default_value.kind_of?(Hash)
|
348
|
+
# we can't handle default values for Hashes, yet
|
349
|
+
# see method parameters for similar behavior
|
350
|
+
default_value = "[:]"
|
346
351
|
else
|
347
352
|
default_value = "\"#{default_value}\""
|
348
353
|
end
|
@@ -366,6 +371,10 @@ module Fastlane
|
|
366
371
|
default_value ||= "[]"
|
367
372
|
end
|
368
373
|
|
374
|
+
if type == "[String : Any]"
|
375
|
+
default_value ||= "[:]"
|
376
|
+
end
|
377
|
+
|
369
378
|
" var #{var_for_parameter_name}: #{type} { return #{default_value} }"
|
370
379
|
end
|
371
380
|
|
@@ -1210,12 +1210,15 @@ func bundleInstall(binstubs: String? = nil,
|
|
1210
1210
|
- launchArguments: Additional launch arguments
|
1211
1211
|
- testInstrumentationRunner: The fully qualified class name of your test instrumentation runner
|
1212
1212
|
- endingLocale: Return the device to this locale after running tests
|
1213
|
+
- useAdbRoot: Restarts the adb daemon using `adb root` to allow access to screenshots directories on device. Use if getting 'Permission denied' errors
|
1213
1214
|
- appApkPath: The path to the APK for the app under test
|
1214
1215
|
- testsApkPath: The path to the APK for the the tests bundle
|
1215
1216
|
- specificDevice: Use the device or emulator with the given serial number or qualifier
|
1216
1217
|
- deviceType: Type of device used for screenshots. Matches Google Play Types (phone, sevenInch, tenInch, tv, wear)
|
1217
1218
|
- exitOnTestFailure: Whether or not to exit Screengrab on test failure. Exiting on failure will not copy sceenshots to local machine nor open sceenshots summary
|
1218
1219
|
- reinstallApp: Enabling this option will automatically uninstall the application before running it
|
1220
|
+
- useTimestampSuffix: Add timestamp suffix to screenshot filename
|
1221
|
+
- adbHost: Configure the host used by adb to connect, allows running on remote devices farm
|
1219
1222
|
*/
|
1220
1223
|
func captureAndroidScreenshots(androidHome: String? = nil,
|
1221
1224
|
buildToolsVersion: String? = nil,
|
@@ -1228,14 +1231,17 @@ func captureAndroidScreenshots(androidHome: String? = nil,
|
|
1228
1231
|
useTestsInPackages: [String]? = nil,
|
1229
1232
|
useTestsInClasses: [String]? = nil,
|
1230
1233
|
launchArguments: [String]? = nil,
|
1231
|
-
testInstrumentationRunner: String = "
|
1234
|
+
testInstrumentationRunner: String = "androidx.test.runner.AndroidJUnitRunner",
|
1232
1235
|
endingLocale: String = "en-US",
|
1236
|
+
useAdbRoot: Bool = false,
|
1233
1237
|
appApkPath: String? = nil,
|
1234
1238
|
testsApkPath: String? = nil,
|
1235
1239
|
specificDevice: String? = nil,
|
1236
1240
|
deviceType: String = "phone",
|
1237
1241
|
exitOnTestFailure: Bool = true,
|
1238
|
-
reinstallApp: Bool = false
|
1242
|
+
reinstallApp: Bool = false,
|
1243
|
+
useTimestampSuffix: Bool = true,
|
1244
|
+
adbHost: String? = nil) {
|
1239
1245
|
let command = RubyCommand(commandID: "", methodName: "capture_android_screenshots", className: nil, args: [RubyCommand.Argument(name: "android_home", value: androidHome),
|
1240
1246
|
RubyCommand.Argument(name: "build_tools_version", value: buildToolsVersion),
|
1241
1247
|
RubyCommand.Argument(name: "locales", value: locales),
|
@@ -1249,12 +1255,15 @@ func captureAndroidScreenshots(androidHome: String? = nil,
|
|
1249
1255
|
RubyCommand.Argument(name: "launch_arguments", value: launchArguments),
|
1250
1256
|
RubyCommand.Argument(name: "test_instrumentation_runner", value: testInstrumentationRunner),
|
1251
1257
|
RubyCommand.Argument(name: "ending_locale", value: endingLocale),
|
1258
|
+
RubyCommand.Argument(name: "use_adb_root", value: useAdbRoot),
|
1252
1259
|
RubyCommand.Argument(name: "app_apk_path", value: appApkPath),
|
1253
1260
|
RubyCommand.Argument(name: "tests_apk_path", value: testsApkPath),
|
1254
1261
|
RubyCommand.Argument(name: "specific_device", value: specificDevice),
|
1255
1262
|
RubyCommand.Argument(name: "device_type", value: deviceType),
|
1256
1263
|
RubyCommand.Argument(name: "exit_on_test_failure", value: exitOnTestFailure),
|
1257
|
-
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp)
|
1264
|
+
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
|
1265
|
+
RubyCommand.Argument(name: "use_timestamp_suffix", value: useTimestampSuffix),
|
1266
|
+
RubyCommand.Argument(name: "adb_host", value: adbHost)])
|
1258
1267
|
_ = runner.executeCommand(command)
|
1259
1268
|
}
|
1260
1269
|
|
@@ -1567,7 +1576,7 @@ func carthage(command: String = "bootstrap",
|
|
1567
1576
|
*/
|
1568
1577
|
func cert(development: Bool = false,
|
1569
1578
|
force: Bool = false,
|
1570
|
-
generateAppleCerts: Bool =
|
1579
|
+
generateAppleCerts: Bool = true,
|
1571
1580
|
username: String,
|
1572
1581
|
teamId: String? = nil,
|
1573
1582
|
teamName: String? = nil,
|
@@ -2620,8 +2629,8 @@ func echo(message: String? = nil) {
|
|
2620
2629
|
/**
|
2621
2630
|
Raises an exception if not using `bundle exec` to run fastlane
|
2622
2631
|
|
2623
|
-
This action will check if you are using bundle exec to run fastlane.
|
2624
|
-
You can put it into `before_all`
|
2632
|
+
This action will check if you are using `bundle exec` to run fastlane.
|
2633
|
+
You can put it into `before_all` to make sure that fastlane is ran using the `bundle exec fastlane` command.
|
2625
2634
|
*/
|
2626
2635
|
func ensureBundleExec() {
|
2627
2636
|
let command = RubyCommand(commandID: "", methodName: "ensure_bundle_exec", className: nil, args: [])
|
@@ -2939,7 +2948,7 @@ func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
|
|
2939
2948
|
*/
|
2940
2949
|
func getCertificates(development: Bool = false,
|
2941
2950
|
force: Bool = false,
|
2942
|
-
generateAppleCerts: Bool =
|
2951
|
+
generateAppleCerts: Bool = true,
|
2943
2952
|
username: String,
|
2944
2953
|
teamId: String? = nil,
|
2945
2954
|
teamName: String? = nil,
|
@@ -3869,7 +3878,7 @@ func importCertificate(certificatePath: String,
|
|
3869
3878
|
This action will increment the version number.
|
3870
3879
|
You first have to set up your Xcode project, if you haven't done it already: [https://developer.apple.com/library/ios/qa/qa1827/_index.html](https://developer.apple.com/library/ios/qa/qa1827/_index.html).
|
3871
3880
|
*/
|
3872
|
-
@discardableResult func incrementVersionNumber(bumpType: String = "
|
3881
|
+
@discardableResult func incrementVersionNumber(bumpType: String = "bump",
|
3873
3882
|
versionNumber: String? = nil,
|
3874
3883
|
xcodeproj: String? = nil) -> String {
|
3875
3884
|
let command = RubyCommand(commandID: "", methodName: "increment_version_number", className: nil, args: [RubyCommand.Argument(name: "bump_type", value: bumpType),
|
@@ -4224,6 +4233,7 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
4224
4233
|
- shallowClone: Make a shallow clone of the repository (truncate the history to 1 revision)
|
4225
4234
|
- cloneBranchDirectly: Clone just the branch specified, instead of the whole repo. This requires that the branch already exists. Otherwise the command will fail
|
4226
4235
|
- gitBasicAuthorization: Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64
|
4236
|
+
- gitBearerAuthorization: Use a bearer authorization header to access the git repo (e.g.: access to an Azure Devops repository), usually a string in Base64
|
4227
4237
|
- googleCloudBucketName: Name of the Google Cloud Storage bucket to use
|
4228
4238
|
- googleCloudKeysFile: Path to the gc_keys.json file
|
4229
4239
|
- googleCloudProjectId: ID of the Google Cloud project to use for authentication
|
@@ -4256,6 +4266,7 @@ func match(type: Any = matchfile.type,
|
|
4256
4266
|
shallowClone: Bool = matchfile.shallowClone,
|
4257
4267
|
cloneBranchDirectly: Bool = matchfile.cloneBranchDirectly,
|
4258
4268
|
gitBasicAuthorization: Any? = matchfile.gitBasicAuthorization,
|
4269
|
+
gitBearerAuthorization: Any? = matchfile.gitBearerAuthorization,
|
4259
4270
|
googleCloudBucketName: Any? = matchfile.googleCloudBucketName,
|
4260
4271
|
googleCloudKeysFile: Any? = matchfile.googleCloudKeysFile,
|
4261
4272
|
googleCloudProjectId: Any? = matchfile.googleCloudProjectId,
|
@@ -4285,6 +4296,7 @@ func match(type: Any = matchfile.type,
|
|
4285
4296
|
RubyCommand.Argument(name: "shallow_clone", value: shallowClone),
|
4286
4297
|
RubyCommand.Argument(name: "clone_branch_directly", value: cloneBranchDirectly),
|
4287
4298
|
RubyCommand.Argument(name: "git_basic_authorization", value: gitBasicAuthorization),
|
4299
|
+
RubyCommand.Argument(name: "git_bearer_authorization", value: gitBearerAuthorization),
|
4288
4300
|
RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
|
4289
4301
|
RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
|
4290
4302
|
RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
|
@@ -5323,7 +5335,7 @@ func rubocop() {
|
|
5323
5335
|
Verifies the minimum ruby version required
|
5324
5336
|
|
5325
5337
|
Add this to your `Fastfile` to require a certain version of _ruby_.
|
5326
|
-
Put it at the top of your `Fastfile to ensure that _fastlane_ is executed appropriately.
|
5338
|
+
Put it at the top of your `Fastfile` to ensure that _fastlane_ is executed appropriately.
|
5327
5339
|
*/
|
5328
5340
|
func rubyVersion() {
|
5329
5341
|
let command = RubyCommand(commandID: "", methodName: "ruby_version", className: nil, args: [])
|
@@ -5791,12 +5803,15 @@ func scp(username: String,
|
|
5791
5803
|
- launchArguments: Additional launch arguments
|
5792
5804
|
- testInstrumentationRunner: The fully qualified class name of your test instrumentation runner
|
5793
5805
|
- endingLocale: Return the device to this locale after running tests
|
5806
|
+
- useAdbRoot: Restarts the adb daemon using `adb root` to allow access to screenshots directories on device. Use if getting 'Permission denied' errors
|
5794
5807
|
- appApkPath: The path to the APK for the app under test
|
5795
5808
|
- testsApkPath: The path to the APK for the the tests bundle
|
5796
5809
|
- specificDevice: Use the device or emulator with the given serial number or qualifier
|
5797
5810
|
- deviceType: Type of device used for screenshots. Matches Google Play Types (phone, sevenInch, tenInch, tv, wear)
|
5798
5811
|
- exitOnTestFailure: Whether or not to exit Screengrab on test failure. Exiting on failure will not copy sceenshots to local machine nor open sceenshots summary
|
5799
5812
|
- reinstallApp: Enabling this option will automatically uninstall the application before running it
|
5813
|
+
- useTimestampSuffix: Add timestamp suffix to screenshot filename
|
5814
|
+
- adbHost: Configure the host used by adb to connect, allows running on remote devices farm
|
5800
5815
|
*/
|
5801
5816
|
func screengrab(androidHome: Any? = screengrabfile.androidHome,
|
5802
5817
|
buildToolsVersion: Any? = screengrabfile.buildToolsVersion,
|
@@ -5811,12 +5826,15 @@ func screengrab(androidHome: Any? = screengrabfile.androidHome,
|
|
5811
5826
|
launchArguments: [String]? = screengrabfile.launchArguments,
|
5812
5827
|
testInstrumentationRunner: Any = screengrabfile.testInstrumentationRunner,
|
5813
5828
|
endingLocale: Any = screengrabfile.endingLocale,
|
5829
|
+
useAdbRoot: Bool = screengrabfile.useAdbRoot,
|
5814
5830
|
appApkPath: Any? = screengrabfile.appApkPath,
|
5815
5831
|
testsApkPath: Any? = screengrabfile.testsApkPath,
|
5816
5832
|
specificDevice: Any? = screengrabfile.specificDevice,
|
5817
5833
|
deviceType: Any = screengrabfile.deviceType,
|
5818
5834
|
exitOnTestFailure: Bool = screengrabfile.exitOnTestFailure,
|
5819
|
-
reinstallApp: Bool = screengrabfile.reinstallApp
|
5835
|
+
reinstallApp: Bool = screengrabfile.reinstallApp,
|
5836
|
+
useTimestampSuffix: Bool = screengrabfile.useTimestampSuffix,
|
5837
|
+
adbHost: Any? = screengrabfile.adbHost) {
|
5820
5838
|
let command = RubyCommand(commandID: "", methodName: "screengrab", className: nil, args: [RubyCommand.Argument(name: "android_home", value: androidHome),
|
5821
5839
|
RubyCommand.Argument(name: "build_tools_version", value: buildToolsVersion),
|
5822
5840
|
RubyCommand.Argument(name: "locales", value: locales),
|
@@ -5830,12 +5848,15 @@ func screengrab(androidHome: Any? = screengrabfile.androidHome,
|
|
5830
5848
|
RubyCommand.Argument(name: "launch_arguments", value: launchArguments),
|
5831
5849
|
RubyCommand.Argument(name: "test_instrumentation_runner", value: testInstrumentationRunner),
|
5832
5850
|
RubyCommand.Argument(name: "ending_locale", value: endingLocale),
|
5851
|
+
RubyCommand.Argument(name: "use_adb_root", value: useAdbRoot),
|
5833
5852
|
RubyCommand.Argument(name: "app_apk_path", value: appApkPath),
|
5834
5853
|
RubyCommand.Argument(name: "tests_apk_path", value: testsApkPath),
|
5835
5854
|
RubyCommand.Argument(name: "specific_device", value: specificDevice),
|
5836
5855
|
RubyCommand.Argument(name: "device_type", value: deviceType),
|
5837
5856
|
RubyCommand.Argument(name: "exit_on_test_failure", value: exitOnTestFailure),
|
5838
|
-
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp)
|
5857
|
+
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
|
5858
|
+
RubyCommand.Argument(name: "use_timestamp_suffix", value: useTimestampSuffix),
|
5859
|
+
RubyCommand.Argument(name: "adb_host", value: adbHost)])
|
5839
5860
|
_ = runner.executeCommand(command)
|
5840
5861
|
}
|
5841
5862
|
|
@@ -6698,7 +6719,7 @@ func ssh(username: String,
|
|
6698
6719
|
*/
|
6699
6720
|
func supply(packageName: String,
|
6700
6721
|
versionName: String? = nil,
|
6701
|
-
versionCode:
|
6722
|
+
versionCode: Int? = nil,
|
6702
6723
|
releaseStatus: String = "completed",
|
6703
6724
|
track: String = "production",
|
6704
6725
|
rollout: String? = nil,
|
@@ -6831,6 +6852,7 @@ func swiftlint(mode: Any = "lint",
|
|
6831
6852
|
- shallowClone: Make a shallow clone of the repository (truncate the history to 1 revision)
|
6832
6853
|
- cloneBranchDirectly: Clone just the branch specified, instead of the whole repo. This requires that the branch already exists. Otherwise the command will fail
|
6833
6854
|
- gitBasicAuthorization: Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64
|
6855
|
+
- gitBearerAuthorization: Use a bearer authorization header to access the git repo (e.g.: access to an Azure Devops repository), usually a string in Base64
|
6834
6856
|
- googleCloudBucketName: Name of the Google Cloud Storage bucket to use
|
6835
6857
|
- googleCloudKeysFile: Path to the gc_keys.json file
|
6836
6858
|
- googleCloudProjectId: ID of the Google Cloud project to use for authentication
|
@@ -6849,7 +6871,7 @@ func swiftlint(mode: Any = "lint",
|
|
6849
6871
|
*/
|
6850
6872
|
func syncCodeSigning(type: String = "development",
|
6851
6873
|
readonly: Bool = false,
|
6852
|
-
generateAppleCerts: Bool =
|
6874
|
+
generateAppleCerts: Bool = true,
|
6853
6875
|
skipProvisioningProfiles: Bool = false,
|
6854
6876
|
appIdentifier: [String],
|
6855
6877
|
username: String,
|
@@ -6863,6 +6885,7 @@ func syncCodeSigning(type: String = "development",
|
|
6863
6885
|
shallowClone: Bool = false,
|
6864
6886
|
cloneBranchDirectly: Bool = false,
|
6865
6887
|
gitBasicAuthorization: String? = nil,
|
6888
|
+
gitBearerAuthorization: String? = nil,
|
6866
6889
|
googleCloudBucketName: String? = nil,
|
6867
6890
|
googleCloudKeysFile: String? = nil,
|
6868
6891
|
googleCloudProjectId: String? = nil,
|
@@ -6892,6 +6915,7 @@ func syncCodeSigning(type: String = "development",
|
|
6892
6915
|
RubyCommand.Argument(name: "shallow_clone", value: shallowClone),
|
6893
6916
|
RubyCommand.Argument(name: "clone_branch_directly", value: cloneBranchDirectly),
|
6894
6917
|
RubyCommand.Argument(name: "git_basic_authorization", value: gitBasicAuthorization),
|
6918
|
+
RubyCommand.Argument(name: "git_bearer_authorization", value: gitBearerAuthorization),
|
6895
6919
|
RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
|
6896
6920
|
RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
|
6897
6921
|
RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
|
@@ -6939,6 +6963,7 @@ func teamName() {
|
|
6939
6963
|
- autoUpdate: Allows an easy upgrade of all users to the current version. To enable set to 'on'
|
6940
6964
|
- notify: Send email to testers
|
6941
6965
|
- options: Array of options (shake,video_only_wifi,anonymous)
|
6966
|
+
- custom: Array of custom options. Contact support@testfairy.com for more information
|
6942
6967
|
- timeout: Request timeout in seconds
|
6943
6968
|
|
6944
6969
|
You can retrieve your API key on [your settings page](https://free.testfairy.com/settings/)
|
@@ -6954,6 +6979,7 @@ func testfairy(apiKey: String,
|
|
6954
6979
|
autoUpdate: String = "off",
|
6955
6980
|
notify: String = "off",
|
6956
6981
|
options: [String] = [],
|
6982
|
+
custom: String = "",
|
6957
6983
|
timeout: Int? = nil) {
|
6958
6984
|
let command = RubyCommand(commandID: "", methodName: "testfairy", className: nil, args: [RubyCommand.Argument(name: "api_key", value: apiKey),
|
6959
6985
|
RubyCommand.Argument(name: "ipa", value: ipa),
|
@@ -6966,6 +6992,7 @@ func testfairy(apiKey: String,
|
|
6966
6992
|
RubyCommand.Argument(name: "auto_update", value: autoUpdate),
|
6967
6993
|
RubyCommand.Argument(name: "notify", value: notify),
|
6968
6994
|
RubyCommand.Argument(name: "options", value: options),
|
6995
|
+
RubyCommand.Argument(name: "custom", value: custom),
|
6969
6996
|
RubyCommand.Argument(name: "timeout", value: timeout)])
|
6970
6997
|
_ = runner.executeCommand(command)
|
6971
6998
|
}
|
@@ -7720,7 +7747,7 @@ func uploadToAppStore(username: String,
|
|
7720
7747
|
*/
|
7721
7748
|
func uploadToPlayStore(packageName: String,
|
7722
7749
|
versionName: String? = nil,
|
7723
|
-
versionCode:
|
7750
|
+
versionCode: Int? = nil,
|
7724
7751
|
releaseStatus: String = "completed",
|
7725
7752
|
track: String = "production",
|
7726
7753
|
rollout: String? = nil,
|
@@ -8066,7 +8093,10 @@ func xcexport() {
|
|
8066
8093
|
/**
|
8067
8094
|
Change the xcode-path to use. Useful for beta versions of Xcode
|
8068
8095
|
|
8069
|
-
Select and build with the Xcode installed at the provided path.
|
8096
|
+
Select and build with the Xcode installed at the provided path.
|
8097
|
+
Use the `xcversion` action if you want to select an Xcode:
|
8098
|
+
- Based on a version specifier or
|
8099
|
+
- You don't have known, stable paths, as may happen in a CI environment.
|
8070
8100
|
*/
|
8071
8101
|
func xcodeSelect() {
|
8072
8102
|
let command = RubyCommand(commandID: "", methodName: "xcode_select", className: nil, args: [])
|
@@ -8181,7 +8211,7 @@ func xcov(workspace: String? = nil,
|
|
8181
8211
|
coverallsServiceJobId: String? = nil,
|
8182
8212
|
coverallsRepoToken: String? = nil,
|
8183
8213
|
xcconfig: String? = nil,
|
8184
|
-
ideFoundationPath: String = "/Applications/Xcode-
|
8214
|
+
ideFoundationPath: String = "/Applications/Xcode-11.2.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
|
8185
8215
|
legacySupport: Bool = false) {
|
8186
8216
|
let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
8187
8217
|
RubyCommand.Argument(name: "project", value: project),
|
@@ -8326,4 +8356,4 @@ let snapshotfile: Snapshotfile = Snapshotfile()
|
|
8326
8356
|
|
8327
8357
|
// Please don't remove the lines below
|
8328
8358
|
// They are used to detect outdated files
|
8329
|
-
// FastlaneRunnerAPIVersion [0.9.
|
8359
|
+
// FastlaneRunnerAPIVersion [0.9.66]
|