fastlane 2.135.0 → 2.138.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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]
|