fastlane 2.135.2 → 2.140.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 +64 -64
- data/deliver/lib/deliver/submit_for_review.rb +7 -1
- data/fastlane/lib/fastlane/action.rb +2 -2
- data/fastlane/lib/fastlane/actions/.hockey.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/.slack.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/.update_project_provisioning.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +1 -1
- data/fastlane/lib/fastlane/actions/create_pull_request.rb +42 -2
- 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_app_store.md.erb +10 -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/gradle.rb +54 -3
- data/fastlane/lib/fastlane/actions/increment_version_number.rb +6 -3
- data/fastlane/lib/fastlane/actions/last_git_tag.rb +14 -5
- 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/run_tests.rb +5 -22
- data/fastlane/lib/fastlane/actions/setup_ci.rb +14 -8
- data/fastlane/lib/fastlane/actions/testfairy.rb +8 -1
- data/fastlane/lib/fastlane/actions/upload_to_play_store_internal_app_sharing.rb +78 -0
- 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/runner.rb +23 -18
- 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 +130 -28
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- 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/ScanfileProtocol.swift +13 -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/.build_watcher.rb.swp +0 -0
- data/fastlane_core/lib/fastlane_core/build_watcher.rb +6 -2
- data/fastlane_core/lib/fastlane_core/device_manager.rb +20 -0
- data/fastlane_core/lib/fastlane_core/helper.rb +7 -1
- data/frameit/lib/frameit/editor.rb +3 -0
- data/gym/lib/gym/generators/build_command_generator.rb +1 -0
- data/gym/lib/gym/runner.rb +38 -19
- 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/pilot/lib/pilot/.manager.rb.swp +0 -0
- data/pilot/lib/pilot/build_manager.rb +46 -12
- data/pilot/lib/pilot/options.rb +3 -1
- data/scan/lib/scan/detect_values.rb +6 -1
- data/scan/lib/scan/manager.rb +18 -1
- data/scan/lib/scan/options.rb +17 -0
- data/scan/lib/scan/runner.rb +6 -0
- data/scan/lib/scan/slack_poster.rb +1 -1
- data/scan/lib/scan/test_command_generator.rb +1 -1
- 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/.DS_Store +0 -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/models/build.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/build_beta_detail.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +9 -0
- data/spaceship/lib/spaceship/portal/.certificate.rb.swp +0 -0
- data/spaceship/lib/spaceship/tunes/iap.rb +11 -11
- data/spaceship/lib/spaceship/tunes/iap_detail.rb +7 -3
- data/spaceship/lib/spaceship/tunes/iap_families.rb +12 -1
- data/spaceship/lib/spaceship/tunes/iap_family_details.rb +26 -17
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +4 -7
- data/supply/lib/supply/client.rb +27 -0
- data/supply/lib/supply/options.rb +8 -2
- data/supply/lib/supply/uploader.rb +82 -33
- metadata +49 -26
- data/supply/lib/supply/.options.rb.swp +0 -0
- data/supply/lib/supply/.uploader.rb.swp +0 -0
@@ -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
|
@@ -225,27 +225,32 @@ module Fastlane
|
|
225
225
|
|
226
226
|
begin
|
227
227
|
Dir.chdir(custom_dir) do # go up from the fastlane folder, to the project folder
|
228
|
-
#
|
228
|
+
# Removing step_name before its parsed into configurations
|
229
|
+
args = arguments.kind_of?(Array) && arguments.first.kind_of?(Hash) ? arguments.first : {}
|
230
|
+
step_name = args.delete(:step_name)
|
231
|
+
|
232
|
+
# arguments is an array by default, containing an hash with the actual parameters
|
233
|
+
# Since we usually just need the passed hash, we'll just use the first object if there is only one
|
234
|
+
if arguments.count == 0
|
235
|
+
configurations = ConfigurationHelper.parse(class_ref, {}) # no parameters => empty hash
|
236
|
+
elsif arguments.count == 1 && arguments.first.kind_of?(Hash)
|
237
|
+
configurations = ConfigurationHelper.parse(class_ref, arguments.first) # Correct configuration passed
|
238
|
+
elsif !class_ref.available_options
|
239
|
+
# This action does not use the new action format
|
240
|
+
# Just passing the arguments to this method
|
241
|
+
configurations = arguments
|
242
|
+
else
|
243
|
+
UI.user_error!("You have to call the integration like `#{method_sym}(key: \"value\")`. Run `fastlane action #{method_sym}` for all available keys. Please check out the current documentation on GitHub.")
|
244
|
+
end
|
229
245
|
|
246
|
+
# If another action is calling this action, we shouldn't show it in the summary
|
247
|
+
# A nil value for action_name will hide it from the summary
|
230
248
|
unless from_action
|
231
|
-
|
232
|
-
action_name
|
233
|
-
args.delete(:step_name)
|
249
|
+
action_name = step_name
|
250
|
+
action_name ||= class_ref.method(:step_text).arity == 1 ? class_ref.step_text(configurations) : class_ref.step_text
|
234
251
|
end
|
235
|
-
Actions.execute_action(action_name) do
|
236
|
-
# arguments is an array by default, containing an hash with the actual parameters
|
237
|
-
# Since we usually just need the passed hash, we'll just use the first object if there is only one
|
238
|
-
if arguments.count == 0
|
239
|
-
arguments = ConfigurationHelper.parse(class_ref, {}) # no parameters => empty hash
|
240
|
-
elsif arguments.count == 1 && arguments.first.kind_of?(Hash)
|
241
|
-
arguments = ConfigurationHelper.parse(class_ref, arguments.first) # Correct configuration passed
|
242
|
-
elsif !class_ref.available_options
|
243
|
-
# This action does not use the new action format
|
244
|
-
# Just passing the arguments to this method
|
245
|
-
else
|
246
|
-
UI.user_error!("You have to call the integration like `#{method_sym}(key: \"value\")`. Run `fastlane action #{method_sym}` for all available keys. Please check out the current documentation on GitHub.")
|
247
|
-
end
|
248
252
|
|
253
|
+
Actions.execute_action(action_name) do
|
249
254
|
if Fastlane::Actions.is_deprecated?(class_ref)
|
250
255
|
puts("==========================================".deprecated)
|
251
256
|
puts("This action (#{method_sym}) is deprecated".deprecated)
|
@@ -253,7 +258,7 @@ module Fastlane
|
|
253
258
|
puts("==========================================\n".deprecated)
|
254
259
|
end
|
255
260
|
class_ref.runner = self # needed to call another action from an action
|
256
|
-
return class_ref.run(
|
261
|
+
return class_ref.run(configurations)
|
257
262
|
end
|
258
263
|
end
|
259
264
|
rescue Interrupt => e
|
@@ -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
|
|
@@ -829,6 +829,7 @@ func buildAndUploadToAppetize(xcodebuild: [String : Any] = [:],
|
|
829
829
|
- task: The gradle task you want to execute, e.g. `assemble`, `bundle` or `test`. For tasks such as `assembleMyFlavorRelease` you should use gradle(task: 'assemble', flavor: 'Myflavor', build_type: 'Release')
|
830
830
|
- flavor: The flavor that you want the task for, e.g. `MyFlavor`. If you are running the `assemble` task in a multi-flavor project, and you rely on Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH] then you must specify a flavor here or else this value will be undefined
|
831
831
|
- buildType: The build type that you want the task for, e.g. `Release`. Useful for some tasks such as `assemble`
|
832
|
+
- tasks: The multiple gradle tasks that you want to execute, e.g. `[assembleDebug, bundleDebug]`
|
832
833
|
- flags: All parameter flags you want to pass to the gradle command, e.g. `--exitcode --xml file.xml`
|
833
834
|
- projectDir: The root directory of the gradle project
|
834
835
|
- gradlePath: The path to your `gradlew`. If you specify a relative path, it is assumed to be relative to the `project_dir`
|
@@ -842,9 +843,10 @@ func buildAndUploadToAppetize(xcodebuild: [String : Any] = [:],
|
|
842
843
|
|
843
844
|
Run `./gradlew tasks` to get a list of all available gradle tasks for your project
|
844
845
|
*/
|
845
|
-
func buildAndroidApp(task: String,
|
846
|
+
func buildAndroidApp(task: String? = nil,
|
846
847
|
flavor: String? = nil,
|
847
848
|
buildType: String? = nil,
|
849
|
+
tasks: [String]? = nil,
|
848
850
|
flags: String? = nil,
|
849
851
|
projectDir: String = ".",
|
850
852
|
gradlePath: String? = nil,
|
@@ -856,6 +858,7 @@ func buildAndroidApp(task: String,
|
|
856
858
|
let command = RubyCommand(commandID: "", methodName: "build_android_app", className: nil, args: [RubyCommand.Argument(name: "task", value: task),
|
857
859
|
RubyCommand.Argument(name: "flavor", value: flavor),
|
858
860
|
RubyCommand.Argument(name: "build_type", value: buildType),
|
861
|
+
RubyCommand.Argument(name: "tasks", value: tasks),
|
859
862
|
RubyCommand.Argument(name: "flags", value: flags),
|
860
863
|
RubyCommand.Argument(name: "project_dir", value: projectDir),
|
861
864
|
RubyCommand.Argument(name: "gradle_path", value: gradlePath),
|
@@ -1210,12 +1213,15 @@ func bundleInstall(binstubs: String? = nil,
|
|
1210
1213
|
- launchArguments: Additional launch arguments
|
1211
1214
|
- testInstrumentationRunner: The fully qualified class name of your test instrumentation runner
|
1212
1215
|
- endingLocale: Return the device to this locale after running tests
|
1216
|
+
- useAdbRoot: Restarts the adb daemon using `adb root` to allow access to screenshots directories on device. Use if getting 'Permission denied' errors
|
1213
1217
|
- appApkPath: The path to the APK for the app under test
|
1214
1218
|
- testsApkPath: The path to the APK for the the tests bundle
|
1215
1219
|
- specificDevice: Use the device or emulator with the given serial number or qualifier
|
1216
1220
|
- deviceType: Type of device used for screenshots. Matches Google Play Types (phone, sevenInch, tenInch, tv, wear)
|
1217
1221
|
- 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
1222
|
- reinstallApp: Enabling this option will automatically uninstall the application before running it
|
1223
|
+
- useTimestampSuffix: Add timestamp suffix to screenshot filename
|
1224
|
+
- adbHost: Configure the host used by adb to connect, allows running on remote devices farm
|
1219
1225
|
*/
|
1220
1226
|
func captureAndroidScreenshots(androidHome: String? = nil,
|
1221
1227
|
buildToolsVersion: String? = nil,
|
@@ -1228,14 +1234,17 @@ func captureAndroidScreenshots(androidHome: String? = nil,
|
|
1228
1234
|
useTestsInPackages: [String]? = nil,
|
1229
1235
|
useTestsInClasses: [String]? = nil,
|
1230
1236
|
launchArguments: [String]? = nil,
|
1231
|
-
testInstrumentationRunner: String = "
|
1237
|
+
testInstrumentationRunner: String = "androidx.test.runner.AndroidJUnitRunner",
|
1232
1238
|
endingLocale: String = "en-US",
|
1239
|
+
useAdbRoot: Bool = false,
|
1233
1240
|
appApkPath: String? = nil,
|
1234
1241
|
testsApkPath: String? = nil,
|
1235
1242
|
specificDevice: String? = nil,
|
1236
1243
|
deviceType: String = "phone",
|
1237
1244
|
exitOnTestFailure: Bool = true,
|
1238
|
-
reinstallApp: Bool = false
|
1245
|
+
reinstallApp: Bool = false,
|
1246
|
+
useTimestampSuffix: Bool = true,
|
1247
|
+
adbHost: String? = nil) {
|
1239
1248
|
let command = RubyCommand(commandID: "", methodName: "capture_android_screenshots", className: nil, args: [RubyCommand.Argument(name: "android_home", value: androidHome),
|
1240
1249
|
RubyCommand.Argument(name: "build_tools_version", value: buildToolsVersion),
|
1241
1250
|
RubyCommand.Argument(name: "locales", value: locales),
|
@@ -1249,12 +1258,15 @@ func captureAndroidScreenshots(androidHome: String? = nil,
|
|
1249
1258
|
RubyCommand.Argument(name: "launch_arguments", value: launchArguments),
|
1250
1259
|
RubyCommand.Argument(name: "test_instrumentation_runner", value: testInstrumentationRunner),
|
1251
1260
|
RubyCommand.Argument(name: "ending_locale", value: endingLocale),
|
1261
|
+
RubyCommand.Argument(name: "use_adb_root", value: useAdbRoot),
|
1252
1262
|
RubyCommand.Argument(name: "app_apk_path", value: appApkPath),
|
1253
1263
|
RubyCommand.Argument(name: "tests_apk_path", value: testsApkPath),
|
1254
1264
|
RubyCommand.Argument(name: "specific_device", value: specificDevice),
|
1255
1265
|
RubyCommand.Argument(name: "device_type", value: deviceType),
|
1256
1266
|
RubyCommand.Argument(name: "exit_on_test_failure", value: exitOnTestFailure),
|
1257
|
-
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp)
|
1267
|
+
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
|
1268
|
+
RubyCommand.Argument(name: "use_timestamp_suffix", value: useTimestampSuffix),
|
1269
|
+
RubyCommand.Argument(name: "adb_host", value: adbHost)])
|
1258
1270
|
_ = runner.executeCommand(command)
|
1259
1271
|
}
|
1260
1272
|
|
@@ -1567,7 +1579,7 @@ func carthage(command: String = "bootstrap",
|
|
1567
1579
|
*/
|
1568
1580
|
func cert(development: Bool = false,
|
1569
1581
|
force: Bool = false,
|
1570
|
-
generateAppleCerts: Bool =
|
1582
|
+
generateAppleCerts: Bool = true,
|
1571
1583
|
username: String,
|
1572
1584
|
teamId: String? = nil,
|
1573
1585
|
teamName: String? = nil,
|
@@ -2137,6 +2149,8 @@ func createKeychain(name: String? = nil,
|
|
2137
2149
|
- base: The name of the branch you want your changes pulled into (defaults to `master`)
|
2138
2150
|
- apiUrl: The URL of GitHub API - used when the Enterprise (default to `https://api.github.com`)
|
2139
2151
|
- assignees: The assignees for the pull request
|
2152
|
+
- reviewers: The reviewers (slug) for the pull request
|
2153
|
+
- teamReviewers: The team reviewers (slug) for the pull request
|
2140
2154
|
|
2141
2155
|
- returns: The pull request URL when successful
|
2142
2156
|
*/
|
@@ -2148,7 +2162,9 @@ func createPullRequest(apiToken: String,
|
|
2148
2162
|
head: String? = nil,
|
2149
2163
|
base: String = "master",
|
2150
2164
|
apiUrl: String = "https://api.github.com",
|
2151
|
-
assignees: [String]? = nil
|
2165
|
+
assignees: [String]? = nil,
|
2166
|
+
reviewers: [String]? = nil,
|
2167
|
+
teamReviewers: [String]? = nil) {
|
2152
2168
|
let command = RubyCommand(commandID: "", methodName: "create_pull_request", className: nil, args: [RubyCommand.Argument(name: "api_token", value: apiToken),
|
2153
2169
|
RubyCommand.Argument(name: "repo", value: repo),
|
2154
2170
|
RubyCommand.Argument(name: "title", value: title),
|
@@ -2157,7 +2173,9 @@ func createPullRequest(apiToken: String,
|
|
2157
2173
|
RubyCommand.Argument(name: "head", value: head),
|
2158
2174
|
RubyCommand.Argument(name: "base", value: base),
|
2159
2175
|
RubyCommand.Argument(name: "api_url", value: apiUrl),
|
2160
|
-
RubyCommand.Argument(name: "assignees", value: assignees)
|
2176
|
+
RubyCommand.Argument(name: "assignees", value: assignees),
|
2177
|
+
RubyCommand.Argument(name: "reviewers", value: reviewers),
|
2178
|
+
RubyCommand.Argument(name: "team_reviewers", value: teamReviewers)])
|
2161
2179
|
_ = runner.executeCommand(command)
|
2162
2180
|
}
|
2163
2181
|
|
@@ -2568,7 +2586,7 @@ func downloadDsyms(username: String,
|
|
2568
2586
|
func downloadFromPlayStore(packageName: String,
|
2569
2587
|
versionName: String? = nil,
|
2570
2588
|
track: String = "production",
|
2571
|
-
metadataPath: String
|
2589
|
+
metadataPath: String = "./metadata",
|
2572
2590
|
key: String? = nil,
|
2573
2591
|
issuer: String? = nil,
|
2574
2592
|
jsonKey: String? = nil,
|
@@ -2620,8 +2638,8 @@ func echo(message: String? = nil) {
|
|
2620
2638
|
/**
|
2621
2639
|
Raises an exception if not using `bundle exec` to run fastlane
|
2622
2640
|
|
2623
|
-
This action will check if you are using bundle exec to run fastlane.
|
2624
|
-
You can put it into `before_all`
|
2641
|
+
This action will check if you are using `bundle exec` to run fastlane.
|
2642
|
+
You can put it into `before_all` to make sure that fastlane is ran using the `bundle exec fastlane` command.
|
2625
2643
|
*/
|
2626
2644
|
func ensureBundleExec() {
|
2627
2645
|
let command = RubyCommand(commandID: "", methodName: "ensure_bundle_exec", className: nil, args: [])
|
@@ -2939,7 +2957,7 @@ func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
|
|
2939
2957
|
*/
|
2940
2958
|
func getCertificates(development: Bool = false,
|
2941
2959
|
force: Bool = false,
|
2942
|
-
generateAppleCerts: Bool =
|
2960
|
+
generateAppleCerts: Bool = true,
|
2943
2961
|
username: String,
|
2944
2962
|
teamId: String? = nil,
|
2945
2963
|
teamName: String? = nil,
|
@@ -3410,6 +3428,7 @@ func googlePlayTrackVersionCodes(packageName: String,
|
|
3410
3428
|
- task: The gradle task you want to execute, e.g. `assemble`, `bundle` or `test`. For tasks such as `assembleMyFlavorRelease` you should use gradle(task: 'assemble', flavor: 'Myflavor', build_type: 'Release')
|
3411
3429
|
- flavor: The flavor that you want the task for, e.g. `MyFlavor`. If you are running the `assemble` task in a multi-flavor project, and you rely on Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH] then you must specify a flavor here or else this value will be undefined
|
3412
3430
|
- buildType: The build type that you want the task for, e.g. `Release`. Useful for some tasks such as `assemble`
|
3431
|
+
- tasks: The multiple gradle tasks that you want to execute, e.g. `[assembleDebug, bundleDebug]`
|
3413
3432
|
- flags: All parameter flags you want to pass to the gradle command, e.g. `--exitcode --xml file.xml`
|
3414
3433
|
- projectDir: The root directory of the gradle project
|
3415
3434
|
- gradlePath: The path to your `gradlew`. If you specify a relative path, it is assumed to be relative to the `project_dir`
|
@@ -3423,9 +3442,10 @@ func googlePlayTrackVersionCodes(packageName: String,
|
|
3423
3442
|
|
3424
3443
|
Run `./gradlew tasks` to get a list of all available gradle tasks for your project
|
3425
3444
|
*/
|
3426
|
-
func gradle(task: String,
|
3445
|
+
func gradle(task: String? = nil,
|
3427
3446
|
flavor: String? = nil,
|
3428
3447
|
buildType: String? = nil,
|
3448
|
+
tasks: [String]? = nil,
|
3429
3449
|
flags: String? = nil,
|
3430
3450
|
projectDir: String = ".",
|
3431
3451
|
gradlePath: String? = nil,
|
@@ -3437,6 +3457,7 @@ func gradle(task: String,
|
|
3437
3457
|
let command = RubyCommand(commandID: "", methodName: "gradle", className: nil, args: [RubyCommand.Argument(name: "task", value: task),
|
3438
3458
|
RubyCommand.Argument(name: "flavor", value: flavor),
|
3439
3459
|
RubyCommand.Argument(name: "build_type", value: buildType),
|
3460
|
+
RubyCommand.Argument(name: "tasks", value: tasks),
|
3440
3461
|
RubyCommand.Argument(name: "flags", value: flags),
|
3441
3462
|
RubyCommand.Argument(name: "project_dir", value: projectDir),
|
3442
3463
|
RubyCommand.Argument(name: "gradle_path", value: gradlePath),
|
@@ -3869,7 +3890,7 @@ func importCertificate(certificatePath: String,
|
|
3869
3890
|
This action will increment the version number.
|
3870
3891
|
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
3892
|
*/
|
3872
|
-
@discardableResult func incrementVersionNumber(bumpType: String = "
|
3893
|
+
@discardableResult func incrementVersionNumber(bumpType: String = "bump",
|
3873
3894
|
versionNumber: String? = nil,
|
3874
3895
|
xcodeproj: String? = nil) -> String {
|
3875
3896
|
let command = RubyCommand(commandID: "", methodName: "increment_version_number", className: nil, args: [RubyCommand.Argument(name: "bump_type", value: bumpType),
|
@@ -4068,10 +4089,13 @@ func jira(url: String,
|
|
4068
4089
|
/**
|
4069
4090
|
Get the most recent git tag
|
4070
4091
|
|
4092
|
+
- parameter pattern: Pattern to filter tags when looking for last one. Limit tags to ones matching given shell glob. If pattern lacks ?, *, or [, * at the end is implied
|
4093
|
+
|
4071
4094
|
If you are using this action on a **shallow clone**, *the default with some CI systems like Bamboo*, you need to ensure that you have also pulled all the git tags appropriately. Assuming your git repo has the correct remote set you can issue `sh('git fetch --tags')`.
|
4095
|
+
Pattern parameter allows you to filter to a subset of tags.
|
4072
4096
|
*/
|
4073
|
-
@discardableResult func lastGitTag() -> String {
|
4074
|
-
let command = RubyCommand(commandID: "", methodName: "last_git_tag", className: nil, args: [])
|
4097
|
+
@discardableResult func lastGitTag(pattern: String? = nil) -> String {
|
4098
|
+
let command = RubyCommand(commandID: "", methodName: "last_git_tag", className: nil, args: [RubyCommand.Argument(name: "pattern", value: pattern)])
|
4075
4099
|
return runner.executeCommand(command)
|
4076
4100
|
}
|
4077
4101
|
|
@@ -4224,6 +4248,7 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
4224
4248
|
- shallowClone: Make a shallow clone of the repository (truncate the history to 1 revision)
|
4225
4249
|
- cloneBranchDirectly: Clone just the branch specified, instead of the whole repo. This requires that the branch already exists. Otherwise the command will fail
|
4226
4250
|
- gitBasicAuthorization: Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64
|
4251
|
+
- 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
4252
|
- googleCloudBucketName: Name of the Google Cloud Storage bucket to use
|
4228
4253
|
- googleCloudKeysFile: Path to the gc_keys.json file
|
4229
4254
|
- googleCloudProjectId: ID of the Google Cloud project to use for authentication
|
@@ -4256,6 +4281,7 @@ func match(type: Any = matchfile.type,
|
|
4256
4281
|
shallowClone: Bool = matchfile.shallowClone,
|
4257
4282
|
cloneBranchDirectly: Bool = matchfile.cloneBranchDirectly,
|
4258
4283
|
gitBasicAuthorization: Any? = matchfile.gitBasicAuthorization,
|
4284
|
+
gitBearerAuthorization: Any? = matchfile.gitBearerAuthorization,
|
4259
4285
|
googleCloudBucketName: Any? = matchfile.googleCloudBucketName,
|
4260
4286
|
googleCloudKeysFile: Any? = matchfile.googleCloudKeysFile,
|
4261
4287
|
googleCloudProjectId: Any? = matchfile.googleCloudProjectId,
|
@@ -4285,6 +4311,7 @@ func match(type: Any = matchfile.type,
|
|
4285
4311
|
RubyCommand.Argument(name: "shallow_clone", value: shallowClone),
|
4286
4312
|
RubyCommand.Argument(name: "clone_branch_directly", value: cloneBranchDirectly),
|
4287
4313
|
RubyCommand.Argument(name: "git_basic_authorization", value: gitBasicAuthorization),
|
4314
|
+
RubyCommand.Argument(name: "git_bearer_authorization", value: gitBearerAuthorization),
|
4288
4315
|
RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
|
4289
4316
|
RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
|
4290
4317
|
RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
|
@@ -4655,7 +4682,7 @@ func pem(development: Bool = false,
|
|
4655
4682
|
- localizedBuildInfo: Localized beta app test info for what's new
|
4656
4683
|
- changelog: Provide the 'What to Test' text when uploading a new build. `skip_waiting_for_build_processing: false` is required to set the changelog
|
4657
4684
|
- skipSubmission: Skip the distributing action of pilot and only upload the ipa file
|
4658
|
-
- skipWaitingForBuildProcessing:
|
4685
|
+
- skipWaitingForBuildProcessing: If set to true, the `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan). If set to `true` and a changelog is provided, it will partially wait for the build to appear on AppStore Connect so the changelog can be set, and skip the remaining processing steps
|
4659
4686
|
- updateBuildInfoOnUpload: **DEPRECATED!** Update build info immediately after validation. This is deprecated and will be removed in a future release. App Store Connect no longer supports setting build info until after build processing has completed, which is when build info is updated by default
|
4660
4687
|
- usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
|
4661
4688
|
- distributeExternal: Should the build be distributed to external testers?
|
@@ -5323,7 +5350,7 @@ func rubocop() {
|
|
5323
5350
|
Verifies the minimum ruby version required
|
5324
5351
|
|
5325
5352
|
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.
|
5353
|
+
Put it at the top of your `Fastfile` to ensure that _fastlane_ is executed appropriately.
|
5327
5354
|
*/
|
5328
5355
|
func rubyVersion() {
|
5329
5356
|
let command = RubyCommand(commandID: "", methodName: "ruby_version", className: nil, args: [])
|
@@ -5342,6 +5369,7 @@ func rubyVersion() {
|
|
5342
5369
|
- skipDetectDevices: Should skip auto detecting of devices if none were specified
|
5343
5370
|
- forceQuitSimulator: Enabling this option will automatically killall Simulator processes before the run
|
5344
5371
|
- resetSimulator: Enabling this option will automatically erase the simulator before running the application
|
5372
|
+
- disableSlideToType: Enabling this option will disable the simulator from showing the 'Slide to type' prompt
|
5345
5373
|
- prelaunchSimulator: Enabling this option will launch the first simulator prior to calling any xcodebuild command
|
5346
5374
|
- reinstallApp: Enabling this option will automatically uninstall the application before running it
|
5347
5375
|
- appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
|
@@ -5376,6 +5404,8 @@ func rubyVersion() {
|
|
5376
5404
|
- configuration: The configuration to use when building the app. Defaults to 'Release'
|
5377
5405
|
- xcargs: Pass additional arguments to xcodebuild. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
|
5378
5406
|
- xcconfig: Use an extra XCCONFIG file to build your app
|
5407
|
+
- appName: App name to use in slack message and logfile name
|
5408
|
+
- deploymentTargetVersion: Target version of the app being build or tested. Used to filter out simulator version
|
5379
5409
|
- slackUrl: Create an Incoming WebHook for your Slack group to post results there
|
5380
5410
|
- slackChannel: #channel or @username
|
5381
5411
|
- slackMessage: The message included with each message posted to slack
|
@@ -5399,6 +5429,7 @@ func runTests(workspace: String? = nil,
|
|
5399
5429
|
skipDetectDevices: Bool = false,
|
5400
5430
|
forceQuitSimulator: Bool = false,
|
5401
5431
|
resetSimulator: Bool = false,
|
5432
|
+
disableSlideToType: Bool = true,
|
5402
5433
|
prelaunchSimulator: Bool? = nil,
|
5403
5434
|
reinstallApp: Bool = false,
|
5404
5435
|
appIdentifier: String? = nil,
|
@@ -5433,6 +5464,8 @@ func runTests(workspace: String? = nil,
|
|
5433
5464
|
configuration: String? = nil,
|
5434
5465
|
xcargs: String? = nil,
|
5435
5466
|
xcconfig: String? = nil,
|
5467
|
+
appName: String? = nil,
|
5468
|
+
deploymentTargetVersion: String? = nil,
|
5436
5469
|
slackUrl: String? = nil,
|
5437
5470
|
slackChannel: String? = nil,
|
5438
5471
|
slackMessage: String? = nil,
|
@@ -5453,6 +5486,7 @@ func runTests(workspace: String? = nil,
|
|
5453
5486
|
RubyCommand.Argument(name: "skip_detect_devices", value: skipDetectDevices),
|
5454
5487
|
RubyCommand.Argument(name: "force_quit_simulator", value: forceQuitSimulator),
|
5455
5488
|
RubyCommand.Argument(name: "reset_simulator", value: resetSimulator),
|
5489
|
+
RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
|
5456
5490
|
RubyCommand.Argument(name: "prelaunch_simulator", value: prelaunchSimulator),
|
5457
5491
|
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
|
5458
5492
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
@@ -5487,6 +5521,8 @@ func runTests(workspace: String? = nil,
|
|
5487
5521
|
RubyCommand.Argument(name: "configuration", value: configuration),
|
5488
5522
|
RubyCommand.Argument(name: "xcargs", value: xcargs),
|
5489
5523
|
RubyCommand.Argument(name: "xcconfig", value: xcconfig),
|
5524
|
+
RubyCommand.Argument(name: "app_name", value: appName),
|
5525
|
+
RubyCommand.Argument(name: "deployment_target_version", value: deploymentTargetVersion),
|
5490
5526
|
RubyCommand.Argument(name: "slack_url", value: slackUrl),
|
5491
5527
|
RubyCommand.Argument(name: "slack_channel", value: slackChannel),
|
5492
5528
|
RubyCommand.Argument(name: "slack_message", value: slackMessage),
|
@@ -5588,6 +5624,7 @@ func say(text: Any,
|
|
5588
5624
|
- skipDetectDevices: Should skip auto detecting of devices if none were specified
|
5589
5625
|
- forceQuitSimulator: Enabling this option will automatically killall Simulator processes before the run
|
5590
5626
|
- resetSimulator: Enabling this option will automatically erase the simulator before running the application
|
5627
|
+
- disableSlideToType: Enabling this option will disable the simulator from showing the 'Slide to type' prompt
|
5591
5628
|
- prelaunchSimulator: Enabling this option will launch the first simulator prior to calling any xcodebuild command
|
5592
5629
|
- reinstallApp: Enabling this option will automatically uninstall the application before running it
|
5593
5630
|
- appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
|
@@ -5622,6 +5659,8 @@ func say(text: Any,
|
|
5622
5659
|
- configuration: The configuration to use when building the app. Defaults to 'Release'
|
5623
5660
|
- xcargs: Pass additional arguments to xcodebuild. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
|
5624
5661
|
- xcconfig: Use an extra XCCONFIG file to build your app
|
5662
|
+
- appName: App name to use in slack message and logfile name
|
5663
|
+
- deploymentTargetVersion: Target version of the app being build or tested. Used to filter out simulator version
|
5625
5664
|
- slackUrl: Create an Incoming WebHook for your Slack group to post results there
|
5626
5665
|
- slackChannel: #channel or @username
|
5627
5666
|
- slackMessage: The message included with each message posted to slack
|
@@ -5645,6 +5684,7 @@ func scan(workspace: Any? = scanfile.workspace,
|
|
5645
5684
|
skipDetectDevices: Bool = scanfile.skipDetectDevices,
|
5646
5685
|
forceQuitSimulator: Bool = scanfile.forceQuitSimulator,
|
5647
5686
|
resetSimulator: Bool = scanfile.resetSimulator,
|
5687
|
+
disableSlideToType: Bool = scanfile.disableSlideToType,
|
5648
5688
|
prelaunchSimulator: Bool? = scanfile.prelaunchSimulator,
|
5649
5689
|
reinstallApp: Bool = scanfile.reinstallApp,
|
5650
5690
|
appIdentifier: Any? = scanfile.appIdentifier,
|
@@ -5679,6 +5719,8 @@ func scan(workspace: Any? = scanfile.workspace,
|
|
5679
5719
|
configuration: Any? = scanfile.configuration,
|
5680
5720
|
xcargs: Any? = scanfile.xcargs,
|
5681
5721
|
xcconfig: Any? = scanfile.xcconfig,
|
5722
|
+
appName: Any? = scanfile.appName,
|
5723
|
+
deploymentTargetVersion: Any? = scanfile.deploymentTargetVersion,
|
5682
5724
|
slackUrl: Any? = scanfile.slackUrl,
|
5683
5725
|
slackChannel: Any? = scanfile.slackChannel,
|
5684
5726
|
slackMessage: Any? = scanfile.slackMessage,
|
@@ -5699,6 +5741,7 @@ func scan(workspace: Any? = scanfile.workspace,
|
|
5699
5741
|
RubyCommand.Argument(name: "skip_detect_devices", value: skipDetectDevices),
|
5700
5742
|
RubyCommand.Argument(name: "force_quit_simulator", value: forceQuitSimulator),
|
5701
5743
|
RubyCommand.Argument(name: "reset_simulator", value: resetSimulator),
|
5744
|
+
RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
|
5702
5745
|
RubyCommand.Argument(name: "prelaunch_simulator", value: prelaunchSimulator),
|
5703
5746
|
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
|
5704
5747
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
@@ -5733,6 +5776,8 @@ func scan(workspace: Any? = scanfile.workspace,
|
|
5733
5776
|
RubyCommand.Argument(name: "configuration", value: configuration),
|
5734
5777
|
RubyCommand.Argument(name: "xcargs", value: xcargs),
|
5735
5778
|
RubyCommand.Argument(name: "xcconfig", value: xcconfig),
|
5779
|
+
RubyCommand.Argument(name: "app_name", value: appName),
|
5780
|
+
RubyCommand.Argument(name: "deployment_target_version", value: deploymentTargetVersion),
|
5736
5781
|
RubyCommand.Argument(name: "slack_url", value: slackUrl),
|
5737
5782
|
RubyCommand.Argument(name: "slack_channel", value: slackChannel),
|
5738
5783
|
RubyCommand.Argument(name: "slack_message", value: slackMessage),
|
@@ -5791,12 +5836,15 @@ func scp(username: String,
|
|
5791
5836
|
- launchArguments: Additional launch arguments
|
5792
5837
|
- testInstrumentationRunner: The fully qualified class name of your test instrumentation runner
|
5793
5838
|
- endingLocale: Return the device to this locale after running tests
|
5839
|
+
- useAdbRoot: Restarts the adb daemon using `adb root` to allow access to screenshots directories on device. Use if getting 'Permission denied' errors
|
5794
5840
|
- appApkPath: The path to the APK for the app under test
|
5795
5841
|
- testsApkPath: The path to the APK for the the tests bundle
|
5796
5842
|
- specificDevice: Use the device or emulator with the given serial number or qualifier
|
5797
5843
|
- deviceType: Type of device used for screenshots. Matches Google Play Types (phone, sevenInch, tenInch, tv, wear)
|
5798
5844
|
- 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
5845
|
- reinstallApp: Enabling this option will automatically uninstall the application before running it
|
5846
|
+
- useTimestampSuffix: Add timestamp suffix to screenshot filename
|
5847
|
+
- adbHost: Configure the host used by adb to connect, allows running on remote devices farm
|
5800
5848
|
*/
|
5801
5849
|
func screengrab(androidHome: Any? = screengrabfile.androidHome,
|
5802
5850
|
buildToolsVersion: Any? = screengrabfile.buildToolsVersion,
|
@@ -5811,12 +5859,15 @@ func screengrab(androidHome: Any? = screengrabfile.androidHome,
|
|
5811
5859
|
launchArguments: [String]? = screengrabfile.launchArguments,
|
5812
5860
|
testInstrumentationRunner: Any = screengrabfile.testInstrumentationRunner,
|
5813
5861
|
endingLocale: Any = screengrabfile.endingLocale,
|
5862
|
+
useAdbRoot: Bool = screengrabfile.useAdbRoot,
|
5814
5863
|
appApkPath: Any? = screengrabfile.appApkPath,
|
5815
5864
|
testsApkPath: Any? = screengrabfile.testsApkPath,
|
5816
5865
|
specificDevice: Any? = screengrabfile.specificDevice,
|
5817
5866
|
deviceType: Any = screengrabfile.deviceType,
|
5818
5867
|
exitOnTestFailure: Bool = screengrabfile.exitOnTestFailure,
|
5819
|
-
reinstallApp: Bool = screengrabfile.reinstallApp
|
5868
|
+
reinstallApp: Bool = screengrabfile.reinstallApp,
|
5869
|
+
useTimestampSuffix: Bool = screengrabfile.useTimestampSuffix,
|
5870
|
+
adbHost: Any? = screengrabfile.adbHost) {
|
5820
5871
|
let command = RubyCommand(commandID: "", methodName: "screengrab", className: nil, args: [RubyCommand.Argument(name: "android_home", value: androidHome),
|
5821
5872
|
RubyCommand.Argument(name: "build_tools_version", value: buildToolsVersion),
|
5822
5873
|
RubyCommand.Argument(name: "locales", value: locales),
|
@@ -5830,12 +5881,15 @@ func screengrab(androidHome: Any? = screengrabfile.androidHome,
|
|
5830
5881
|
RubyCommand.Argument(name: "launch_arguments", value: launchArguments),
|
5831
5882
|
RubyCommand.Argument(name: "test_instrumentation_runner", value: testInstrumentationRunner),
|
5832
5883
|
RubyCommand.Argument(name: "ending_locale", value: endingLocale),
|
5884
|
+
RubyCommand.Argument(name: "use_adb_root", value: useAdbRoot),
|
5833
5885
|
RubyCommand.Argument(name: "app_apk_path", value: appApkPath),
|
5834
5886
|
RubyCommand.Argument(name: "tests_apk_path", value: testsApkPath),
|
5835
5887
|
RubyCommand.Argument(name: "specific_device", value: specificDevice),
|
5836
5888
|
RubyCommand.Argument(name: "device_type", value: deviceType),
|
5837
5889
|
RubyCommand.Argument(name: "exit_on_test_failure", value: exitOnTestFailure),
|
5838
|
-
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp)
|
5890
|
+
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
|
5891
|
+
RubyCommand.Argument(name: "use_timestamp_suffix", value: useTimestampSuffix),
|
5892
|
+
RubyCommand.Argument(name: "adb_host", value: adbHost)])
|
5839
5893
|
_ = runner.executeCommand(command)
|
5840
5894
|
}
|
5841
5895
|
|
@@ -5985,7 +6039,7 @@ func setPodKey(useBundleExec: Bool = true,
|
|
5985
6039
|
|
5986
6040
|
- parameters:
|
5987
6041
|
- force: Force setup, even if not executed by CI
|
5988
|
-
- provider: CI provider
|
6042
|
+
- provider: CI provider. If none is set, the provider is detected automatically
|
5989
6043
|
|
5990
6044
|
- Creates a new temporary keychain for use with match|
|
5991
6045
|
- Switches match to `readonly` mode to not create new profiles/cert on CI|
|
@@ -6702,7 +6756,7 @@ func supply(packageName: String,
|
|
6702
6756
|
releaseStatus: String = "completed",
|
6703
6757
|
track: String = "production",
|
6704
6758
|
rollout: String? = nil,
|
6705
|
-
metadataPath: String
|
6759
|
+
metadataPath: String = "./metadata",
|
6706
6760
|
key: String? = nil,
|
6707
6761
|
issuer: String? = nil,
|
6708
6762
|
jsonKey: String? = nil,
|
@@ -6831,6 +6885,7 @@ func swiftlint(mode: Any = "lint",
|
|
6831
6885
|
- shallowClone: Make a shallow clone of the repository (truncate the history to 1 revision)
|
6832
6886
|
- cloneBranchDirectly: Clone just the branch specified, instead of the whole repo. This requires that the branch already exists. Otherwise the command will fail
|
6833
6887
|
- gitBasicAuthorization: Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64
|
6888
|
+
- 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
6889
|
- googleCloudBucketName: Name of the Google Cloud Storage bucket to use
|
6835
6890
|
- googleCloudKeysFile: Path to the gc_keys.json file
|
6836
6891
|
- googleCloudProjectId: ID of the Google Cloud project to use for authentication
|
@@ -6849,7 +6904,7 @@ func swiftlint(mode: Any = "lint",
|
|
6849
6904
|
*/
|
6850
6905
|
func syncCodeSigning(type: String = "development",
|
6851
6906
|
readonly: Bool = false,
|
6852
|
-
generateAppleCerts: Bool =
|
6907
|
+
generateAppleCerts: Bool = true,
|
6853
6908
|
skipProvisioningProfiles: Bool = false,
|
6854
6909
|
appIdentifier: [String],
|
6855
6910
|
username: String,
|
@@ -6863,6 +6918,7 @@ func syncCodeSigning(type: String = "development",
|
|
6863
6918
|
shallowClone: Bool = false,
|
6864
6919
|
cloneBranchDirectly: Bool = false,
|
6865
6920
|
gitBasicAuthorization: String? = nil,
|
6921
|
+
gitBearerAuthorization: String? = nil,
|
6866
6922
|
googleCloudBucketName: String? = nil,
|
6867
6923
|
googleCloudKeysFile: String? = nil,
|
6868
6924
|
googleCloudProjectId: String? = nil,
|
@@ -6892,6 +6948,7 @@ func syncCodeSigning(type: String = "development",
|
|
6892
6948
|
RubyCommand.Argument(name: "shallow_clone", value: shallowClone),
|
6893
6949
|
RubyCommand.Argument(name: "clone_branch_directly", value: cloneBranchDirectly),
|
6894
6950
|
RubyCommand.Argument(name: "git_basic_authorization", value: gitBasicAuthorization),
|
6951
|
+
RubyCommand.Argument(name: "git_bearer_authorization", value: gitBearerAuthorization),
|
6895
6952
|
RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
|
6896
6953
|
RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
|
6897
6954
|
RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
|
@@ -6939,6 +6996,7 @@ func teamName() {
|
|
6939
6996
|
- autoUpdate: Allows an easy upgrade of all users to the current version. To enable set to 'on'
|
6940
6997
|
- notify: Send email to testers
|
6941
6998
|
- options: Array of options (shake,video_only_wifi,anonymous)
|
6999
|
+
- custom: Array of custom options. Contact support@testfairy.com for more information
|
6942
7000
|
- timeout: Request timeout in seconds
|
6943
7001
|
|
6944
7002
|
You can retrieve your API key on [your settings page](https://free.testfairy.com/settings/)
|
@@ -6954,6 +7012,7 @@ func testfairy(apiKey: String,
|
|
6954
7012
|
autoUpdate: String = "off",
|
6955
7013
|
notify: String = "off",
|
6956
7014
|
options: [String] = [],
|
7015
|
+
custom: String = "",
|
6957
7016
|
timeout: Int? = nil) {
|
6958
7017
|
let command = RubyCommand(commandID: "", methodName: "testfairy", className: nil, args: [RubyCommand.Argument(name: "api_key", value: apiKey),
|
6959
7018
|
RubyCommand.Argument(name: "ipa", value: ipa),
|
@@ -6966,6 +7025,7 @@ func testfairy(apiKey: String,
|
|
6966
7025
|
RubyCommand.Argument(name: "auto_update", value: autoUpdate),
|
6967
7026
|
RubyCommand.Argument(name: "notify", value: notify),
|
6968
7027
|
RubyCommand.Argument(name: "options", value: options),
|
7028
|
+
RubyCommand.Argument(name: "custom", value: custom),
|
6969
7029
|
RubyCommand.Argument(name: "timeout", value: timeout)])
|
6970
7030
|
_ = runner.executeCommand(command)
|
6971
7031
|
}
|
@@ -6987,7 +7047,7 @@ func testfairy(apiKey: String,
|
|
6987
7047
|
- localizedBuildInfo: Localized beta app test info for what's new
|
6988
7048
|
- changelog: Provide the 'What to Test' text when uploading a new build. `skip_waiting_for_build_processing: false` is required to set the changelog
|
6989
7049
|
- skipSubmission: Skip the distributing action of pilot and only upload the ipa file
|
6990
|
-
- skipWaitingForBuildProcessing:
|
7050
|
+
- skipWaitingForBuildProcessing: If set to true, the `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan). If set to `true` and a changelog is provided, it will partially wait for the build to appear on AppStore Connect so the changelog can be set, and skip the remaining processing steps
|
6991
7051
|
- updateBuildInfoOnUpload: **DEPRECATED!** Update build info immediately after validation. This is deprecated and will be removed in a future release. App Store Connect no longer supports setting build info until after build processing has completed, which is when build info is updated by default
|
6992
7052
|
- usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
|
6993
7053
|
- distributeExternal: Should the build be distributed to external testers?
|
@@ -7724,7 +7784,7 @@ func uploadToPlayStore(packageName: String,
|
|
7724
7784
|
releaseStatus: String = "completed",
|
7725
7785
|
track: String = "production",
|
7726
7786
|
rollout: String? = nil,
|
7727
|
-
metadataPath: String
|
7787
|
+
metadataPath: String = "./metadata",
|
7728
7788
|
key: String? = nil,
|
7729
7789
|
issuer: String? = nil,
|
7730
7790
|
jsonKey: String? = nil,
|
@@ -7789,6 +7849,45 @@ func uploadToPlayStore(packageName: String,
|
|
7789
7849
|
_ = runner.executeCommand(command)
|
7790
7850
|
}
|
7791
7851
|
|
7852
|
+
/**
|
7853
|
+
Upload binaries to Google Play Internal App Sharing (via _supply_)
|
7854
|
+
|
7855
|
+
- parameters:
|
7856
|
+
- packageName: The package name of the application to use
|
7857
|
+
- jsonKey: The path to a file containing service account JSON, used to authenticate with Google
|
7858
|
+
- jsonKeyData: The raw service account JSON data used to authenticate with Google
|
7859
|
+
- apk: Path to the APK file to upload
|
7860
|
+
- apkPaths: An array of paths to APK files to upload
|
7861
|
+
- aab: Path to the AAB file to upload
|
7862
|
+
- aabPaths: An array of paths to AAB files to upload
|
7863
|
+
- rootUrl: Root URL for the Google Play API. The provided URL will be used for API calls in place of https://www.googleapis.com/
|
7864
|
+
- timeout: Timeout for read, open, and send (in seconds)
|
7865
|
+
|
7866
|
+
- returns: Returns a string containing the download URL for the uploaded APK/AAB (or array of strings if multiple were uploaded).
|
7867
|
+
|
7868
|
+
More information: https://docs.fastlane.tools/actions/upload_to_play_store_internal_app_sharing/
|
7869
|
+
*/
|
7870
|
+
func uploadToPlayStoreInternalAppSharing(packageName: String,
|
7871
|
+
jsonKey: String? = nil,
|
7872
|
+
jsonKeyData: String? = nil,
|
7873
|
+
apk: String? = nil,
|
7874
|
+
apkPaths: [String]? = nil,
|
7875
|
+
aab: String? = nil,
|
7876
|
+
aabPaths: [String]? = nil,
|
7877
|
+
rootUrl: String? = nil,
|
7878
|
+
timeout: Int = 300) {
|
7879
|
+
let command = RubyCommand(commandID: "", methodName: "upload_to_play_store_internal_app_sharing", className: nil, args: [RubyCommand.Argument(name: "package_name", value: packageName),
|
7880
|
+
RubyCommand.Argument(name: "json_key", value: jsonKey),
|
7881
|
+
RubyCommand.Argument(name: "json_key_data", value: jsonKeyData),
|
7882
|
+
RubyCommand.Argument(name: "apk", value: apk),
|
7883
|
+
RubyCommand.Argument(name: "apk_paths", value: apkPaths),
|
7884
|
+
RubyCommand.Argument(name: "aab", value: aab),
|
7885
|
+
RubyCommand.Argument(name: "aab_paths", value: aabPaths),
|
7886
|
+
RubyCommand.Argument(name: "root_url", value: rootUrl),
|
7887
|
+
RubyCommand.Argument(name: "timeout", value: timeout)])
|
7888
|
+
_ = runner.executeCommand(command)
|
7889
|
+
}
|
7890
|
+
|
7792
7891
|
/**
|
7793
7892
|
Upload new binary to App Store Connect for TestFlight beta testing (via _pilot_)
|
7794
7893
|
|
@@ -7806,7 +7905,7 @@ func uploadToPlayStore(packageName: String,
|
|
7806
7905
|
- localizedBuildInfo: Localized beta app test info for what's new
|
7807
7906
|
- changelog: Provide the 'What to Test' text when uploading a new build. `skip_waiting_for_build_processing: false` is required to set the changelog
|
7808
7907
|
- skipSubmission: Skip the distributing action of pilot and only upload the ipa file
|
7809
|
-
- skipWaitingForBuildProcessing:
|
7908
|
+
- skipWaitingForBuildProcessing: If set to true, the `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan). If set to `true` and a changelog is provided, it will partially wait for the build to appear on AppStore Connect so the changelog can be set, and skip the remaining processing steps
|
7810
7909
|
- updateBuildInfoOnUpload: **DEPRECATED!** Update build info immediately after validation. This is deprecated and will be removed in a future release. App Store Connect no longer supports setting build info until after build processing has completed, which is when build info is updated by default
|
7811
7910
|
- usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
|
7812
7911
|
- distributeExternal: Should the build be distributed to external testers?
|
@@ -8066,7 +8165,10 @@ func xcexport() {
|
|
8066
8165
|
/**
|
8067
8166
|
Change the xcode-path to use. Useful for beta versions of Xcode
|
8068
8167
|
|
8069
|
-
Select and build with the Xcode installed at the provided path.
|
8168
|
+
Select and build with the Xcode installed at the provided path.
|
8169
|
+
Use the `xcversion` action if you want to select an Xcode:
|
8170
|
+
- Based on a version specifier or
|
8171
|
+
- You don't have known, stable paths, as may happen in a CI environment.
|
8070
8172
|
*/
|
8071
8173
|
func xcodeSelect() {
|
8072
8174
|
let command = RubyCommand(commandID: "", methodName: "xcode_select", className: nil, args: [])
|
@@ -8181,7 +8283,7 @@ func xcov(workspace: String? = nil,
|
|
8181
8283
|
coverallsServiceJobId: String? = nil,
|
8182
8284
|
coverallsRepoToken: String? = nil,
|
8183
8285
|
xcconfig: String? = nil,
|
8184
|
-
ideFoundationPath: String = "/Applications/Xcode-
|
8286
|
+
ideFoundationPath: String = "/Applications/Xcode-11.2.1.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
|
8185
8287
|
legacySupport: Bool = false) {
|
8186
8288
|
let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
8187
8289
|
RubyCommand.Argument(name: "project", value: project),
|
@@ -8326,4 +8428,4 @@ let snapshotfile: Snapshotfile = Snapshotfile()
|
|
8326
8428
|
|
8327
8429
|
// Please don't remove the lines below
|
8328
8430
|
// They are used to detect outdated files
|
8329
|
-
// FastlaneRunnerAPIVersion [0.9.
|
8431
|
+
// FastlaneRunnerAPIVersion [0.9.68]
|