fastlane 2.161.0 → 2.166.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +78 -78
- data/cert/lib/cert/options.rb +28 -1
- data/cert/lib/cert/runner.rb +51 -34
- data/deliver/lib/deliver/.upload_screenshots.rb.swp +0 -0
- data/deliver/lib/deliver/app_screenshot_iterator.rb +4 -4
- data/deliver/lib/deliver/module.rb +2 -0
- data/deliver/lib/deliver/options.rb +5 -5
- data/deliver/lib/deliver/queue_worker.rb +14 -29
- data/deliver/lib/deliver/upload_metadata.rb +20 -5
- data/deliver/lib/deliver/upload_screenshots.rb +28 -13
- data/fastlane/lib/fastlane/actions/.download_dsyms.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/actions_helper.rb +1 -1
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +39 -3
- data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +9 -0
- data/fastlane/lib/fastlane/actions/appledoc.rb +1 -1
- data/fastlane/lib/fastlane/actions/check_app_store_metadata.rb +1 -0
- data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +5 -1
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +9 -0
- data/fastlane/lib/fastlane/actions/get_certificates.rb +1 -0
- data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +1 -0
- data/fastlane/lib/fastlane/actions/import_from_git.rb +9 -1
- data/fastlane/lib/fastlane/actions/is_ci.rb +1 -1
- data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +15 -0
- data/fastlane/lib/fastlane/actions/register_device.rb +46 -5
- data/fastlane/lib/fastlane/actions/register_devices.rb +50 -16
- data/fastlane/lib/fastlane/actions/set_changelog.rb +31 -3
- data/fastlane/lib/fastlane/actions/sync_code_signing.rb +1 -0
- data/fastlane/lib/fastlane/actions/update_fastlane.rb +24 -8
- data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +3 -2
- data/fastlane/lib/fastlane/cli_tools_distributor.rb +1 -1
- data/fastlane/lib/fastlane/fast_file.rb +74 -23
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +1 -0
- data/fastlane/lib/fastlane/swift_fastlane_function.rb +1 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +4 -4
- data/fastlane/swift/Fastlane.swift +119 -23
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +1 -1
- data/fastlane/swift/LaneFileProtocol.swift +15 -19
- data/fastlane/swift/MainProcess.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +20 -4
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +5 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
- data/fastlane/swift/main.swift +1 -1
- data/fastlane_core/lib/fastlane_core/analytics/analytics_session.rb +6 -7
- data/fastlane_core/lib/fastlane_core/device_manager.rb +8 -4
- data/fastlane_core/lib/fastlane_core/helper.rb +10 -2
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +3 -3
- data/fastlane_core/lib/fastlane_core/keychain_importer.rb +3 -3
- data/gym/lib/gym/generators/package_command_generator_xcode7.rb +2 -2
- data/match/lib/match/generator.rb +6 -1
- data/match/lib/match/importer.rb +63 -18
- data/match/lib/match/migrate.rb +13 -2
- data/match/lib/match/nuke.rb +65 -22
- data/match/lib/match/options.rb +33 -2
- data/match/lib/match/runner.rb +38 -10
- data/match/lib/match/spaceship_ensure.rb +27 -21
- data/match/lib/match/storage/google_cloud_storage.rb +20 -3
- data/match/lib/match/storage/s3_storage.rb +19 -3
- data/scan/lib/scan/detect_values.rb +8 -9
- data/scan/lib/scan/module.rb +4 -0
- data/scan/lib/scan/options.rb +9 -0
- data/scan/lib/scan/runner.rb +2 -1
- data/sigh/lib/assets/resign.sh +1 -1
- data/sigh/lib/sigh/download_all.rb +16 -4
- data/sigh/lib/sigh/options.rb +21 -0
- data/sigh/lib/sigh/runner.rb +83 -41
- data/snapshot/lib/assets/SnapshotHelper.swift +4 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +2 -1
- data/snapshot/lib/snapshot/test_command_generator.rb +1 -1
- data/snapshot/lib/snapshot/test_command_generator_base.rb +3 -1
- data/snapshot/lib/snapshot/test_command_generator_xcode_8.rb +1 -1
- data/spaceship/lib/spaceship/client.rb +9 -4
- data/spaceship/lib/spaceship/connect_api.rb +27 -0
- data/spaceship/lib/spaceship/connect_api/api_client.rb +12 -3
- data/spaceship/lib/spaceship/connect_api/client.rb +20 -7
- data/spaceship/lib/spaceship/connect_api/models/app.rb +51 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +3 -1
- data/spaceship/lib/spaceship/connect_api/models/beta_tester.rb +2 -1
- data/spaceship/lib/spaceship/connect_api/models/certificate.rb +42 -0
- data/spaceship/lib/spaceship/connect_api/models/custom_app_organization.rb +43 -0
- data/spaceship/lib/spaceship/connect_api/models/custom_app_user.rb +41 -0
- data/spaceship/lib/spaceship/connect_api/models/device.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/profile.rb +7 -1
- data/spaceship/lib/spaceship/connect_api/models/user_invitation.rb +59 -0
- data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +45 -2
- data/spaceship/lib/spaceship/connect_api/spaceship.rb +7 -4
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +13 -0
- data/spaceship/lib/spaceship/connect_api/token.rb +6 -1
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +71 -0
- data/spaceship/lib/spaceship/connect_api/users/users.rb +40 -0
- data/supply/lib/supply.rb +1 -1
- data/supply/lib/supply/uploader.rb +1 -1
- metadata +24 -18
@@ -125,7 +125,7 @@ module Fastlane
|
|
125
125
|
# Since loading dotenv should respect additional environments passed using
|
126
126
|
# --env, we must extrat the arguments out of ARGV and process them before
|
127
127
|
# calling into commander. This is required since the ENV must be configured
|
128
|
-
# before running any other commands in order to
|
128
|
+
# before running any other commands in order to correctly respect variables
|
129
129
|
# like FASTLANE_HIDE_CHANGELOG and FASTLANE_DISABLE_COLORS
|
130
130
|
def load_dot_env
|
131
131
|
env_cl_param = lambda do
|
@@ -259,11 +259,20 @@ module Fastlane
|
|
259
259
|
return return_value
|
260
260
|
end
|
261
261
|
|
262
|
+
def find_tag(folder: nil, version: nil, remote: false)
|
263
|
+
req = Gem::Requirement.new(version)
|
264
|
+
all_tags = get_tags(folder: folder, remote: remote)
|
265
|
+
|
266
|
+
return all_tags.select { |t| req =~ FastlaneCore::TagVersion.new(t) }.last
|
267
|
+
end
|
268
|
+
|
262
269
|
# @param url [String] The git URL to clone the repository from
|
263
270
|
# @param branch [String] The branch to checkout in the repository
|
264
271
|
# @param path [String] The path to the Fastfile
|
265
272
|
# @param version [String, Array] Version requirement for repo tags
|
266
|
-
|
273
|
+
# @param dependencies [Array] An optional array of additional Fastfiles in the repository
|
274
|
+
# @param cache_path [String] An optional path to a directory where the repository should be cloned into
|
275
|
+
def import_from_git(url: nil, branch: 'HEAD', path: 'fastlane/Fastfile', version: nil, dependencies: [], cache_path: nil) # rubocop:disable Metrics/PerceivedComplexity
|
267
276
|
UI.user_error!("Please pass a path to the `import_from_git` action") if url.to_s.length == 0
|
268
277
|
|
269
278
|
Actions.execute_action('import_from_git') do
|
@@ -271,41 +280,75 @@ module Fastlane
|
|
271
280
|
|
272
281
|
action_launched('import_from_git')
|
273
282
|
|
283
|
+
is_eligible_for_caching = !version.nil? && !cache_path.nil?
|
284
|
+
|
285
|
+
UI.message("Eligible for caching") if is_eligible_for_caching
|
286
|
+
|
274
287
|
# Checkout the repo
|
275
288
|
repo_name = url.split("/").last
|
276
289
|
checkout_param = branch
|
277
290
|
|
278
|
-
|
279
|
-
clone_folder = File.join(
|
291
|
+
import_block = proc do |target_path|
|
292
|
+
clone_folder = File.join(target_path, repo_name)
|
280
293
|
|
281
294
|
branch_option = "--branch #{branch}" if branch != 'HEAD'
|
282
295
|
|
283
296
|
checkout_dependencies = dependencies.map(&:shellescape).join(" ")
|
284
297
|
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
298
|
+
# If the current call is eligible for caching, we check out all the
|
299
|
+
# files and directories. If not, we only check out the specified
|
300
|
+
# `path` and `dependencies`.
|
301
|
+
checkout_path = is_eligible_for_caching ? "" : "#{path.shellescape} #{checkout_dependencies}"
|
302
|
+
|
303
|
+
if Dir[clone_folder].empty?
|
304
|
+
UI.message("Cloning remote git repo...")
|
305
|
+
Helper.with_env_values('GIT_TERMINAL_PROMPT' => '0') do
|
306
|
+
# When using cached clones, we need the entire repository history
|
307
|
+
# so we can switch between tags or branches instantly, or else,
|
308
|
+
# it would defeat the caching's purpose.
|
309
|
+
depth = is_eligible_for_caching ? "" : "--depth 1"
|
310
|
+
|
311
|
+
Actions.sh("git clone #{url.shellescape} #{clone_folder.shellescape} #{depth} --no-checkout #{branch_option}")
|
312
|
+
end
|
290
313
|
end
|
291
314
|
|
292
315
|
unless version.nil?
|
293
|
-
|
294
|
-
|
295
|
-
|
316
|
+
if is_eligible_for_caching
|
317
|
+
checkout_param = find_tag(folder: clone_folder, version: version, remote: false)
|
318
|
+
|
319
|
+
if checkout_param.nil?
|
320
|
+
# Update the repo and try again before failing
|
321
|
+
UI.message("Updating git repo...")
|
322
|
+
Helper.with_env_values('GIT_TERMINAL_PROMPT' => '0') do
|
323
|
+
Actions.sh("cd #{clone_folder.shellescape} && git checkout #{branch} && git reset --hard && git pull --all")
|
324
|
+
end
|
325
|
+
|
326
|
+
checkout_param = find_tag(folder: clone_folder, version: version, remote: false)
|
327
|
+
else
|
328
|
+
UI.message("Found tag #{checkout_param}. No git repo update needed.")
|
329
|
+
end
|
330
|
+
else
|
331
|
+
checkout_param = find_tag(folder: clone_folder, version: version, remote: true)
|
332
|
+
end
|
333
|
+
|
296
334
|
UI.user_error!("No tag found matching #{version.inspect}") if checkout_param.nil?
|
297
335
|
end
|
298
336
|
|
299
337
|
Actions.sh("cd #{clone_folder.shellescape} && git checkout #{checkout_param.shellescape} #{checkout_path}")
|
300
338
|
|
301
|
-
#
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
339
|
+
# Knowing that we check out all the files and directories when the
|
340
|
+
# current call is eligible for caching, we don't need to also
|
341
|
+
# explicitly check out the "actions" directory.
|
342
|
+
unless is_eligible_for_caching
|
343
|
+
# We also want to check out all the local actions of this fastlane setup
|
344
|
+
containing = path.split(File::SEPARATOR)[0..-2]
|
345
|
+
containing = "." if containing.count == 0
|
346
|
+
actions_folder = File.join(containing, "actions")
|
347
|
+
begin
|
348
|
+
Actions.sh("cd #{clone_folder.shellescape} && git checkout #{checkout_param.shellescape} #{actions_folder.shellescape}")
|
349
|
+
rescue
|
350
|
+
# We don't care about a failure here, as local actions are optional
|
351
|
+
end
|
309
352
|
end
|
310
353
|
|
311
354
|
return_value = nil
|
@@ -320,6 +363,12 @@ module Fastlane
|
|
320
363
|
|
321
364
|
return return_value
|
322
365
|
end
|
366
|
+
|
367
|
+
if is_eligible_for_caching
|
368
|
+
import_block.call(File.expand_path(cache_path))
|
369
|
+
else
|
370
|
+
Dir.mktmpdir("fl_clone", &import_block)
|
371
|
+
end
|
323
372
|
end
|
324
373
|
end
|
325
374
|
|
@@ -327,10 +376,12 @@ module Fastlane
|
|
327
376
|
# @!group Versioning helpers
|
328
377
|
#####################################################
|
329
378
|
|
330
|
-
def
|
331
|
-
|
332
|
-
|
333
|
-
|
379
|
+
def get_tags(folder: nil, remote: false)
|
380
|
+
if remote
|
381
|
+
UI.message("Fetching remote git tags...")
|
382
|
+
Helper.with_env_values('GIT_TERMINAL_PROMPT' => '0') do
|
383
|
+
Actions.sh("cd #{folder.shellescape} && git fetch --all --tags -q")
|
384
|
+
end
|
334
385
|
end
|
335
386
|
|
336
387
|
# Fetch all possible tags
|
@@ -136,7 +136,7 @@ module Fastlane
|
|
136
136
|
type = "[String]"
|
137
137
|
elsif default_value.kind_of?(Hash)
|
138
138
|
type = "[String : Any]"
|
139
|
-
#
|
139
|
+
# Although we can have a default value of Integer type, if param_type_override overridden that value, respect it.
|
140
140
|
elsif default_value.kind_of?(Integer)
|
141
141
|
if type == "Double" || type == "Float"
|
142
142
|
begin
|
@@ -53,7 +53,7 @@ public protocol DeliverfileProtocol: class {
|
|
53
53
|
/// Don’t create or update the app version that is being prepared for submission
|
54
54
|
var skipAppVersionUpdate: Bool { get }
|
55
55
|
|
56
|
-
/// Skip
|
56
|
+
/// Skip verification of HTML preview file
|
57
57
|
var force: Bool { get }
|
58
58
|
|
59
59
|
/// Clear all previously uploaded screenshots before uploading the new ones
|
@@ -66,7 +66,7 @@ public protocol DeliverfileProtocol: class {
|
|
66
66
|
var rejectIfPossible: Bool { get }
|
67
67
|
|
68
68
|
/// Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
|
69
|
-
var automaticRelease: Bool { get }
|
69
|
+
var automaticRelease: Bool? { get }
|
70
70
|
|
71
71
|
/// Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)
|
72
72
|
var autoReleaseDate: Int? { get }
|
@@ -211,7 +211,7 @@ public extension DeliverfileProtocol {
|
|
211
211
|
var overwriteScreenshots: Bool { return false }
|
212
212
|
var submitForReview: Bool { return false }
|
213
213
|
var rejectIfPossible: Bool { return false }
|
214
|
-
var automaticRelease: Bool { return
|
214
|
+
var automaticRelease: Bool? { return nil }
|
215
215
|
var autoReleaseDate: Int? { return nil }
|
216
216
|
var phasedRelease: Bool { return false }
|
217
217
|
var resetRatings: Bool { return false }
|
@@ -256,4 +256,4 @@ public extension DeliverfileProtocol {
|
|
256
256
|
|
257
257
|
// Please don't remove the lines below
|
258
258
|
// They are used to detect outdated files
|
259
|
-
// FastlaneRunnerAPIVersion [0.9.
|
259
|
+
// FastlaneRunnerAPIVersion [0.9.49]
|
@@ -98,6 +98,8 @@ public func addGitTag(tag: String? = nil,
|
|
98
98
|
Returns the current build_number of either live or edit version
|
99
99
|
|
100
100
|
- parameters:
|
101
|
+
- apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
102
|
+
- apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
|
101
103
|
- initialBuildNumber: sets the build number to given value if no build is in current train
|
102
104
|
- appIdentifier: The bundle identifier of your app
|
103
105
|
- username: Your Apple ID Username
|
@@ -110,7 +112,9 @@ public func addGitTag(tag: String? = nil,
|
|
110
112
|
Returns the current build number of either the live or testflight version - it is useful for getting the build_number of the current or ready-for-sale app version, and it also works on non-live testflight version.
|
111
113
|
If you need to handle more build-trains please see `latest_testflight_build_number`.
|
112
114
|
*/
|
113
|
-
public func appStoreBuildNumber(
|
115
|
+
public func appStoreBuildNumber(apiKeyPath: String? = nil,
|
116
|
+
apiKey: [String: Any]? = nil,
|
117
|
+
initialBuildNumber: Any,
|
114
118
|
appIdentifier: String,
|
115
119
|
username: String,
|
116
120
|
teamId: Any? = nil,
|
@@ -119,7 +123,9 @@ public func appStoreBuildNumber(initialBuildNumber: Any,
|
|
119
123
|
platform: String = "ios",
|
120
124
|
teamName: String? = nil)
|
121
125
|
{
|
122
|
-
let command = RubyCommand(commandID: "", methodName: "app_store_build_number", className: nil, args: [RubyCommand.Argument(name: "
|
126
|
+
let command = RubyCommand(commandID: "", methodName: "app_store_build_number", className: nil, args: [RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
127
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
128
|
+
RubyCommand.Argument(name: "initial_build_number", value: initialBuildNumber),
|
123
129
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
124
130
|
RubyCommand.Argument(name: "username", value: username),
|
125
131
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
@@ -138,6 +144,7 @@ public func appStoreBuildNumber(initialBuildNumber: Any,
|
|
138
144
|
- issuerId: The issuer ID
|
139
145
|
- keyFilepath: The path to the key p8 file
|
140
146
|
- keyContent: The content of the key p8 file
|
147
|
+
- isKeyContentBase64: Whether :key_content is Base64 encoded or not
|
141
148
|
- duration: The token session duration
|
142
149
|
- inHouse: Is App Store or Enterprise (in house) team? App Store Connect API cannot not determine this on its own (yet)
|
143
150
|
|
@@ -147,6 +154,7 @@ public func appStoreConnectApiKey(keyId: String,
|
|
147
154
|
issuerId: String,
|
148
155
|
keyFilepath: String? = nil,
|
149
156
|
keyContent: String? = nil,
|
157
|
+
isKeyContentBase64: Bool = false,
|
150
158
|
duration: Int? = nil,
|
151
159
|
inHouse: Bool? = nil)
|
152
160
|
{
|
@@ -154,6 +162,7 @@ public func appStoreConnectApiKey(keyId: String,
|
|
154
162
|
RubyCommand.Argument(name: "issuer_id", value: issuerId),
|
155
163
|
RubyCommand.Argument(name: "key_filepath", value: keyFilepath),
|
156
164
|
RubyCommand.Argument(name: "key_content", value: keyContent),
|
165
|
+
RubyCommand.Argument(name: "is_key_content_base64", value: isKeyContentBase64),
|
157
166
|
RubyCommand.Argument(name: "duration", value: duration),
|
158
167
|
RubyCommand.Argument(name: "in_house", value: inHouse)])
|
159
168
|
_ = runner.executeCommand(command)
|
@@ -479,7 +488,7 @@ public func appledoc(input: Any,
|
|
479
488
|
- skipScreenshots: Don't upload the screenshots
|
480
489
|
- skipMetadata: Don't upload the metadata (e.g. title, description). This will still upload screenshots
|
481
490
|
- skipAppVersionUpdate: Don’t create or update the app version that is being prepared for submission
|
482
|
-
- force: Skip
|
491
|
+
- force: Skip verification of HTML preview file
|
483
492
|
- overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
|
484
493
|
- submitForReview: Submit the new version for Review after uploading everything
|
485
494
|
- rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
|
@@ -527,7 +536,7 @@ public func appledoc(input: Any,
|
|
527
536
|
|
528
537
|
Using _upload_to_app_store_ after _build_app_ and _capture_screenshots_ will automatically upload the latest ipa and screenshots with no other configuration.
|
529
538
|
|
530
|
-
If you don't want
|
539
|
+
If you don't want to verify an HTML preview for App Store builds, use the `:force` option.
|
531
540
|
This is useful when running _fastlane_ on your Continuous Integration server:
|
532
541
|
`_upload_to_app_store_(force: true)`
|
533
542
|
If your account is on multiple teams and you need to tell the `iTMSTransporter` which 'provider' to use, you can set the `:itc_provider` option to pass this info.
|
@@ -553,7 +562,7 @@ public func appstore(apiKeyPath: String? = nil,
|
|
553
562
|
overwriteScreenshots: Bool = false,
|
554
563
|
submitForReview: Bool = false,
|
555
564
|
rejectIfPossible: Bool = false,
|
556
|
-
automaticRelease: Bool =
|
565
|
+
automaticRelease: Bool? = nil,
|
557
566
|
autoReleaseDate: Int? = nil,
|
558
567
|
phasedRelease: Bool = false,
|
559
568
|
resetRatings: Bool = false,
|
@@ -1844,6 +1853,8 @@ public func carthage(command: String = "bootstrap",
|
|
1844
1853
|
- type: Create specific certificate type (takes precedence over :development)
|
1845
1854
|
- force: Create a certificate even if an existing certificate exists
|
1846
1855
|
- generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
|
1856
|
+
- apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
1857
|
+
- apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
|
1847
1858
|
- username: Your Apple ID Username
|
1848
1859
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
1849
1860
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
@@ -1851,6 +1862,7 @@ public func carthage(command: String = "bootstrap",
|
|
1851
1862
|
- outputPath: The path to a directory in which all certificates and private keys should be stored
|
1852
1863
|
- keychainPath: Path to a custom keychain
|
1853
1864
|
- keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your account password
|
1865
|
+
- skipSetPartitionList: Skips setting the partition list (which can sometimes take a long time). Setting the partition list is usually needed to prevent Xcode from prompting to allow a cert to be used for signing
|
1854
1866
|
- platform: Set the provisioning profile's platform (ios, macos)
|
1855
1867
|
|
1856
1868
|
**Important**: It is recommended to use [match](https://docs.fastlane.tools/actions/match/) according to the [codesigning.guide](https://codesigning.guide) for generating and maintaining your certificates. Use _cert_ directly only if you want full control over what's going on and know more about codesigning.
|
@@ -1860,6 +1872,8 @@ public func cert(development: Bool = false,
|
|
1860
1872
|
type: String? = nil,
|
1861
1873
|
force: Bool = false,
|
1862
1874
|
generateAppleCerts: Bool = true,
|
1875
|
+
apiKeyPath: String? = nil,
|
1876
|
+
apiKey: [String: Any]? = nil,
|
1863
1877
|
username: String,
|
1864
1878
|
teamId: String? = nil,
|
1865
1879
|
teamName: String? = nil,
|
@@ -1867,12 +1881,15 @@ public func cert(development: Bool = false,
|
|
1867
1881
|
outputPath: String = ".",
|
1868
1882
|
keychainPath: String,
|
1869
1883
|
keychainPassword: String? = nil,
|
1884
|
+
skipSetPartitionList: Bool = false,
|
1870
1885
|
platform: String = "ios")
|
1871
1886
|
{
|
1872
1887
|
let command = RubyCommand(commandID: "", methodName: "cert", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
|
1873
1888
|
RubyCommand.Argument(name: "type", value: type),
|
1874
1889
|
RubyCommand.Argument(name: "force", value: force),
|
1875
1890
|
RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
|
1891
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
1892
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
1876
1893
|
RubyCommand.Argument(name: "username", value: username),
|
1877
1894
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
1878
1895
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
@@ -1880,6 +1897,7 @@ public func cert(development: Bool = false,
|
|
1880
1897
|
RubyCommand.Argument(name: "output_path", value: outputPath),
|
1881
1898
|
RubyCommand.Argument(name: "keychain_path", value: keychainPath),
|
1882
1899
|
RubyCommand.Argument(name: "keychain_password", value: keychainPassword),
|
1900
|
+
RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
|
1883
1901
|
RubyCommand.Argument(name: "platform", value: platform)])
|
1884
1902
|
_ = runner.executeCommand(command)
|
1885
1903
|
}
|
@@ -2591,7 +2609,7 @@ public func deleteKeychain(name: String? = nil,
|
|
2591
2609
|
- skipScreenshots: Don't upload the screenshots
|
2592
2610
|
- skipMetadata: Don't upload the metadata (e.g. title, description). This will still upload screenshots
|
2593
2611
|
- skipAppVersionUpdate: Don’t create or update the app version that is being prepared for submission
|
2594
|
-
- force: Skip
|
2612
|
+
- force: Skip verification of HTML preview file
|
2595
2613
|
- overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
|
2596
2614
|
- submitForReview: Submit the new version for Review after uploading everything
|
2597
2615
|
- rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
|
@@ -2639,7 +2657,7 @@ public func deleteKeychain(name: String? = nil,
|
|
2639
2657
|
|
2640
2658
|
Using _upload_to_app_store_ after _build_app_ and _capture_screenshots_ will automatically upload the latest ipa and screenshots with no other configuration.
|
2641
2659
|
|
2642
|
-
If you don't want
|
2660
|
+
If you don't want to verify an HTML preview for App Store builds, use the `:force` option.
|
2643
2661
|
This is useful when running _fastlane_ on your Continuous Integration server:
|
2644
2662
|
`_upload_to_app_store_(force: true)`
|
2645
2663
|
If your account is on multiple teams and you need to tell the `iTMSTransporter` which 'provider' to use, you can set the `:itc_provider` option to pass this info.
|
@@ -2665,7 +2683,7 @@ public func deliver(apiKeyPath: Any? = deliverfile.apiKeyPath,
|
|
2665
2683
|
overwriteScreenshots: Bool = deliverfile.overwriteScreenshots,
|
2666
2684
|
submitForReview: Bool = deliverfile.submitForReview,
|
2667
2685
|
rejectIfPossible: Bool = deliverfile.rejectIfPossible,
|
2668
|
-
automaticRelease: Bool = deliverfile.automaticRelease,
|
2686
|
+
automaticRelease: Bool? = deliverfile.automaticRelease,
|
2669
2687
|
autoReleaseDate: Int? = deliverfile.autoReleaseDate,
|
2670
2688
|
phasedRelease: Bool = deliverfile.phasedRelease,
|
2671
2689
|
resetRatings: Bool = deliverfile.resetRatings,
|
@@ -3323,6 +3341,8 @@ public func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
|
|
3323
3341
|
- type: Create specific certificate type (takes precedence over :development)
|
3324
3342
|
- force: Create a certificate even if an existing certificate exists
|
3325
3343
|
- generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
|
3344
|
+
- apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
3345
|
+
- apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
|
3326
3346
|
- username: Your Apple ID Username
|
3327
3347
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
3328
3348
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
@@ -3330,6 +3350,7 @@ public func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
|
|
3330
3350
|
- outputPath: The path to a directory in which all certificates and private keys should be stored
|
3331
3351
|
- keychainPath: Path to a custom keychain
|
3332
3352
|
- keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your account password
|
3353
|
+
- skipSetPartitionList: Skips setting the partition list (which can sometimes take a long time). Setting the partition list is usually needed to prevent Xcode from prompting to allow a cert to be used for signing
|
3333
3354
|
- platform: Set the provisioning profile's platform (ios, macos)
|
3334
3355
|
|
3335
3356
|
**Important**: It is recommended to use [match](https://docs.fastlane.tools/actions/match/) according to the [codesigning.guide](https://codesigning.guide) for generating and maintaining your certificates. Use _cert_ directly only if you want full control over what's going on and know more about codesigning.
|
@@ -3339,6 +3360,8 @@ public func getCertificates(development: Bool = false,
|
|
3339
3360
|
type: String? = nil,
|
3340
3361
|
force: Bool = false,
|
3341
3362
|
generateAppleCerts: Bool = true,
|
3363
|
+
apiKeyPath: String? = nil,
|
3364
|
+
apiKey: [String: Any]? = nil,
|
3342
3365
|
username: String,
|
3343
3366
|
teamId: String? = nil,
|
3344
3367
|
teamName: String? = nil,
|
@@ -3346,12 +3369,15 @@ public func getCertificates(development: Bool = false,
|
|
3346
3369
|
outputPath: String = ".",
|
3347
3370
|
keychainPath: String,
|
3348
3371
|
keychainPassword: String? = nil,
|
3372
|
+
skipSetPartitionList: Bool = false,
|
3349
3373
|
platform: String = "ios")
|
3350
3374
|
{
|
3351
3375
|
let command = RubyCommand(commandID: "", methodName: "get_certificates", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
|
3352
3376
|
RubyCommand.Argument(name: "type", value: type),
|
3353
3377
|
RubyCommand.Argument(name: "force", value: force),
|
3354
3378
|
RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
|
3379
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
3380
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
3355
3381
|
RubyCommand.Argument(name: "username", value: username),
|
3356
3382
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
3357
3383
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
@@ -3359,6 +3385,7 @@ public func getCertificates(development: Bool = false,
|
|
3359
3385
|
RubyCommand.Argument(name: "output_path", value: outputPath),
|
3360
3386
|
RubyCommand.Argument(name: "keychain_path", value: keychainPath),
|
3361
3387
|
RubyCommand.Argument(name: "keychain_password", value: keychainPassword),
|
3388
|
+
RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
|
3362
3389
|
RubyCommand.Argument(name: "platform", value: platform)])
|
3363
3390
|
_ = runner.executeCommand(command)
|
3364
3391
|
}
|
@@ -3495,6 +3522,8 @@ public func getManagedPlayStorePublishingRights(jsonKey: String? = nil,
|
|
3495
3522
|
- skipInstall: By default, the certificate will be added to your local machine. Setting this flag will skip this action
|
3496
3523
|
- force: Renew provisioning profiles regardless of its state - to automatically add all devices for ad hoc profiles
|
3497
3524
|
- appIdentifier: The bundle identifier of your app
|
3525
|
+
- apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
3526
|
+
- apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
|
3498
3527
|
- username: Your Apple ID Username
|
3499
3528
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
3500
3529
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
@@ -3521,6 +3550,8 @@ public func getProvisioningProfile(adhoc: Bool = false,
|
|
3521
3550
|
skipInstall: Bool = false,
|
3522
3551
|
force: Bool = false,
|
3523
3552
|
appIdentifier: String,
|
3553
|
+
apiKeyPath: String? = nil,
|
3554
|
+
apiKey: [String: Any]? = nil,
|
3524
3555
|
username: String,
|
3525
3556
|
teamId: String? = nil,
|
3526
3557
|
teamName: String? = nil,
|
@@ -3543,6 +3574,8 @@ public func getProvisioningProfile(adhoc: Bool = false,
|
|
3543
3574
|
RubyCommand.Argument(name: "skip_install", value: skipInstall),
|
3544
3575
|
RubyCommand.Argument(name: "force", value: force),
|
3545
3576
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
3577
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
3578
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
3546
3579
|
RubyCommand.Argument(name: "username", value: username),
|
3547
3580
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
3548
3581
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
@@ -4571,6 +4604,8 @@ public func jira(url: String,
|
|
4571
4604
|
Fetches most recent build number from TestFlight
|
4572
4605
|
|
4573
4606
|
- parameters:
|
4607
|
+
- apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
4608
|
+
- apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
|
4574
4609
|
- live: Query the live version (ready-for-sale)
|
4575
4610
|
- appIdentifier: The bundle identifier of your app
|
4576
4611
|
- username: Your Apple ID Username
|
@@ -4585,7 +4620,9 @@ public func jira(url: String,
|
|
4585
4620
|
Provides a way to have `increment_build_number` be based on the latest build you uploaded to iTC.
|
4586
4621
|
Fetches the most recent build number from TestFlight based on the version number. Provides a way to have `increment_build_number` be based on the latest build you uploaded to iTC.
|
4587
4622
|
*/
|
4588
|
-
@discardableResult public func latestTestflightBuildNumber(
|
4623
|
+
@discardableResult public func latestTestflightBuildNumber(apiKeyPath: String? = nil,
|
4624
|
+
apiKey: [String: Any]? = nil,
|
4625
|
+
live: Bool = false,
|
4589
4626
|
appIdentifier: String,
|
4590
4627
|
username: String,
|
4591
4628
|
version: String? = nil,
|
@@ -4594,7 +4631,9 @@ public func jira(url: String,
|
|
4594
4631
|
teamId: Any? = nil,
|
4595
4632
|
teamName: String? = nil) -> Int
|
4596
4633
|
{
|
4597
|
-
let command = RubyCommand(commandID: "", methodName: "latest_testflight_build_number", className: nil, args: [RubyCommand.Argument(name: "
|
4634
|
+
let command = RubyCommand(commandID: "", methodName: "latest_testflight_build_number", className: nil, args: [RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
4635
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
4636
|
+
RubyCommand.Argument(name: "live", value: live),
|
4598
4637
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
4599
4638
|
RubyCommand.Argument(name: "username", value: username),
|
4600
4639
|
RubyCommand.Argument(name: "version", value: version),
|
@@ -4709,7 +4748,9 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
4709
4748
|
- readonly: Only fetch existing certificates and profiles, don't generate new ones
|
4710
4749
|
- generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
|
4711
4750
|
- skipProvisioningProfiles: Skip syncing provisioning profiles
|
4712
|
-
- appIdentifier: The bundle identifier(s) of your app (comma-separated)
|
4751
|
+
- appIdentifier: The bundle identifier(s) of your app (comma-separated string or array of strings)
|
4752
|
+
- apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
4753
|
+
- apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
|
4713
4754
|
- username: Your Apple ID Username
|
4714
4755
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
4715
4756
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
@@ -4742,7 +4783,9 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
4742
4783
|
- templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
|
4743
4784
|
- profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
|
4744
4785
|
- failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
|
4786
|
+
- skipCertificateMatching: Set to true if there is no access to Apple developer portal but there are certificates, keys and profiles provided. Only works with match import action
|
4745
4787
|
- outputPath: Path in which to export certificates, key and profile
|
4788
|
+
- skipSetPartitionList: Skips setting the partition list (which can sometimes take a long time). Setting the partition list is usually needed to prevent Xcode from prompting to allow a cert to be used for signing
|
4746
4789
|
- verbose: Print out extra information and all commands
|
4747
4790
|
|
4748
4791
|
More information: https://docs.fastlane.tools/actions/match/
|
@@ -4753,7 +4796,9 @@ public func match(type: Any = matchfile.type,
|
|
4753
4796
|
generateAppleCerts: Bool = matchfile.generateAppleCerts,
|
4754
4797
|
skipProvisioningProfiles: Bool = matchfile.skipProvisioningProfiles,
|
4755
4798
|
appIdentifier: [String] = matchfile.appIdentifier,
|
4756
|
-
|
4799
|
+
apiKeyPath: Any? = matchfile.apiKeyPath,
|
4800
|
+
apiKey: [String: Any]? = matchfile.apiKey,
|
4801
|
+
username: Any? = matchfile.username,
|
4757
4802
|
teamId: Any? = matchfile.teamId,
|
4758
4803
|
teamName: Any? = matchfile.teamName,
|
4759
4804
|
storageMode: Any = matchfile.storageMode,
|
@@ -4785,7 +4830,9 @@ public func match(type: Any = matchfile.type,
|
|
4785
4830
|
templateName: Any? = matchfile.templateName,
|
4786
4831
|
profileName: Any? = matchfile.profileName,
|
4787
4832
|
failOnNameTaken: Bool = matchfile.failOnNameTaken,
|
4833
|
+
skipCertificateMatching: Bool = matchfile.skipCertificateMatching,
|
4788
4834
|
outputPath: Any? = matchfile.outputPath,
|
4835
|
+
skipSetPartitionList: Bool = matchfile.skipSetPartitionList,
|
4789
4836
|
verbose: Bool = matchfile.verbose)
|
4790
4837
|
{
|
4791
4838
|
let command = RubyCommand(commandID: "", methodName: "match", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
|
@@ -4794,6 +4841,8 @@ public func match(type: Any = matchfile.type,
|
|
4794
4841
|
RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
|
4795
4842
|
RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
|
4796
4843
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
4844
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
4845
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
4797
4846
|
RubyCommand.Argument(name: "username", value: username),
|
4798
4847
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
4799
4848
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
@@ -4826,7 +4875,9 @@ public func match(type: Any = matchfile.type,
|
|
4826
4875
|
RubyCommand.Argument(name: "template_name", value: templateName),
|
4827
4876
|
RubyCommand.Argument(name: "profile_name", value: profileName),
|
4828
4877
|
RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
|
4878
|
+
RubyCommand.Argument(name: "skip_certificate_matching", value: skipCertificateMatching),
|
4829
4879
|
RubyCommand.Argument(name: "output_path", value: outputPath),
|
4880
|
+
RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
|
4830
4881
|
RubyCommand.Argument(name: "verbose", value: verbose)])
|
4831
4882
|
_ = runner.executeCommand(command)
|
4832
4883
|
}
|
@@ -5739,7 +5790,10 @@ public func recreateSchemes(project: String) {
|
|
5739
5790
|
|
5740
5791
|
- parameters:
|
5741
5792
|
- name: Provide the name of the device to register as
|
5793
|
+
- platform: Provide the platform of the device to register as (ios, mac)
|
5742
5794
|
- udid: Provide the UDID of the device to register as
|
5795
|
+
- apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
5796
|
+
- apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
|
5743
5797
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
5744
5798
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
5745
5799
|
- username: Optional: Your Apple ID
|
@@ -5749,13 +5803,19 @@ public func recreateSchemes(project: String) {
|
|
5749
5803
|
The action will connect to the Apple Developer Portal using the username you specified in your `Appfile` with `apple_id`, but you can override it using the `:username` option.
|
5750
5804
|
*/
|
5751
5805
|
@discardableResult public func registerDevice(name: String,
|
5806
|
+
platform: String = "ios",
|
5752
5807
|
udid: String,
|
5808
|
+
apiKeyPath: String? = nil,
|
5809
|
+
apiKey: [String: Any]? = nil,
|
5753
5810
|
teamId: String? = nil,
|
5754
5811
|
teamName: String? = nil,
|
5755
|
-
username: String) -> String
|
5812
|
+
username: String? = nil) -> String
|
5756
5813
|
{
|
5757
5814
|
let command = RubyCommand(commandID: "", methodName: "register_device", className: nil, args: [RubyCommand.Argument(name: "name", value: name),
|
5815
|
+
RubyCommand.Argument(name: "platform", value: platform),
|
5758
5816
|
RubyCommand.Argument(name: "udid", value: udid),
|
5817
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
5818
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
5759
5819
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
5760
5820
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
5761
5821
|
RubyCommand.Argument(name: "username", value: username)])
|
@@ -5768,6 +5828,8 @@ public func recreateSchemes(project: String) {
|
|
5768
5828
|
- parameters:
|
5769
5829
|
- devices: A hash of devices, with the name as key and the UDID as value
|
5770
5830
|
- devicesFile: Provide a path to a file with the devices to register. For the format of the file see the examples
|
5831
|
+
- apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
5832
|
+
- apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
|
5771
5833
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
5772
5834
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
5773
5835
|
- username: Optional: Your Apple ID
|
@@ -5779,6 +5841,8 @@ public func recreateSchemes(project: String) {
|
|
5779
5841
|
*/
|
5780
5842
|
public func registerDevices(devices: [String: Any]? = nil,
|
5781
5843
|
devicesFile: String? = nil,
|
5844
|
+
apiKeyPath: String? = nil,
|
5845
|
+
apiKey: [String: Any]? = nil,
|
5782
5846
|
teamId: String? = nil,
|
5783
5847
|
teamName: String? = nil,
|
5784
5848
|
username: String,
|
@@ -5786,6 +5850,8 @@ public func registerDevices(devices: [String: Any]? = nil,
|
|
5786
5850
|
{
|
5787
5851
|
let command = RubyCommand(commandID: "", methodName: "register_devices", className: nil, args: [RubyCommand.Argument(name: "devices", value: devices),
|
5788
5852
|
RubyCommand.Argument(name: "devices_file", value: devicesFile),
|
5853
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
5854
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
5789
5855
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
5790
5856
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
5791
5857
|
RubyCommand.Argument(name: "username", value: username),
|
@@ -6011,6 +6077,7 @@ public func rubyVersion() {
|
|
6011
6077
|
- skipSlack: Don't publish to slack, even when an URL is given
|
6012
6078
|
- slackOnlyOnFailure: Only post on Slack if the tests fail
|
6013
6079
|
- destination: Use only if you're a pro, use the other options instead
|
6080
|
+
- catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
|
6014
6081
|
- customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
|
6015
6082
|
- xcodebuildCommand: Allows for override of the default `xcodebuild` command
|
6016
6083
|
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
@@ -6077,6 +6144,7 @@ public func runTests(workspace: String? = nil,
|
|
6077
6144
|
skipSlack: Bool = false,
|
6078
6145
|
slackOnlyOnFailure: Bool = false,
|
6079
6146
|
destination: Any? = nil,
|
6147
|
+
catalystPlatform: String? = nil,
|
6080
6148
|
customReportFileName: String? = nil,
|
6081
6149
|
xcodebuildCommand: String = "env NSUnbufferedIO=YES xcodebuild",
|
6082
6150
|
clonedSourcePackagesPath: String? = nil,
|
@@ -6141,6 +6209,7 @@ public func runTests(workspace: String? = nil,
|
|
6141
6209
|
RubyCommand.Argument(name: "skip_slack", value: skipSlack),
|
6142
6210
|
RubyCommand.Argument(name: "slack_only_on_failure", value: slackOnlyOnFailure),
|
6143
6211
|
RubyCommand.Argument(name: "destination", value: destination),
|
6212
|
+
RubyCommand.Argument(name: "catalyst_platform", value: catalystPlatform),
|
6144
6213
|
RubyCommand.Argument(name: "custom_report_file_name", value: customReportFileName),
|
6145
6214
|
RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand),
|
6146
6215
|
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
|
@@ -6287,6 +6356,7 @@ public func say(text: Any,
|
|
6287
6356
|
- skipSlack: Don't publish to slack, even when an URL is given
|
6288
6357
|
- slackOnlyOnFailure: Only post on Slack if the tests fail
|
6289
6358
|
- destination: Use only if you're a pro, use the other options instead
|
6359
|
+
- catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
|
6290
6360
|
- customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
|
6291
6361
|
- xcodebuildCommand: Allows for override of the default `xcodebuild` command
|
6292
6362
|
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
@@ -6353,6 +6423,7 @@ public func scan(workspace: Any? = scanfile.workspace,
|
|
6353
6423
|
skipSlack: Bool = scanfile.skipSlack,
|
6354
6424
|
slackOnlyOnFailure: Bool = scanfile.slackOnlyOnFailure,
|
6355
6425
|
destination: Any? = scanfile.destination,
|
6426
|
+
catalystPlatform: Any? = scanfile.catalystPlatform,
|
6356
6427
|
customReportFileName: Any? = scanfile.customReportFileName,
|
6357
6428
|
xcodebuildCommand: Any = scanfile.xcodebuildCommand,
|
6358
6429
|
clonedSourcePackagesPath: Any? = scanfile.clonedSourcePackagesPath,
|
@@ -6417,6 +6488,7 @@ public func scan(workspace: Any? = scanfile.workspace,
|
|
6417
6488
|
RubyCommand.Argument(name: "skip_slack", value: skipSlack),
|
6418
6489
|
RubyCommand.Argument(name: "slack_only_on_failure", value: slackOnlyOnFailure),
|
6419
6490
|
RubyCommand.Argument(name: "destination", value: destination),
|
6491
|
+
RubyCommand.Argument(name: "catalyst_platform", value: catalystPlatform),
|
6420
6492
|
RubyCommand.Argument(name: "custom_report_file_name", value: customReportFileName),
|
6421
6493
|
RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand),
|
6422
6494
|
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
|
@@ -6549,6 +6621,8 @@ public func setBuildNumberRepository(useHgRevisionNumber: Bool = false,
|
|
6549
6621
|
Set the changelog for all languages on App Store Connect
|
6550
6622
|
|
6551
6623
|
- parameters:
|
6624
|
+
- apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
6625
|
+
- apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
|
6552
6626
|
- appIdentifier: The bundle identifier of your app
|
6553
6627
|
- username: Your Apple ID Username
|
6554
6628
|
- version: The version number to create/update
|
@@ -6561,15 +6635,19 @@ public func setBuildNumberRepository(useHgRevisionNumber: Bool = false,
|
|
6561
6635
|
You can store the changelog in `./changelog.txt` and it will automatically get loaded from there. This integration is useful if you support e.g. 10 languages and want to use the same "What's new"-text for all languages.
|
6562
6636
|
Defining the version is optional. _fastlane_ will try to automatically detect it if you don't provide one.
|
6563
6637
|
*/
|
6564
|
-
public func setChangelog(
|
6565
|
-
|
6638
|
+
public func setChangelog(apiKeyPath: String? = nil,
|
6639
|
+
apiKey: [String: Any]? = nil,
|
6640
|
+
appIdentifier: String,
|
6641
|
+
username: String? = nil,
|
6566
6642
|
version: String? = nil,
|
6567
6643
|
changelog: String? = nil,
|
6568
6644
|
teamId: Any? = nil,
|
6569
6645
|
teamName: String? = nil,
|
6570
6646
|
platform: String = "ios")
|
6571
6647
|
{
|
6572
|
-
let command = RubyCommand(commandID: "", methodName: "set_changelog", className: nil, args: [RubyCommand.Argument(name: "
|
6648
|
+
let command = RubyCommand(commandID: "", methodName: "set_changelog", className: nil, args: [RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
6649
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
6650
|
+
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
6573
6651
|
RubyCommand.Argument(name: "username", value: username),
|
6574
6652
|
RubyCommand.Argument(name: "version", value: version),
|
6575
6653
|
RubyCommand.Argument(name: "changelog", value: changelog),
|
@@ -6811,6 +6889,8 @@ public func setupTravis(force: Bool = false) {
|
|
6811
6889
|
- skipInstall: By default, the certificate will be added to your local machine. Setting this flag will skip this action
|
6812
6890
|
- force: Renew provisioning profiles regardless of its state - to automatically add all devices for ad hoc profiles
|
6813
6891
|
- appIdentifier: The bundle identifier of your app
|
6892
|
+
- apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
6893
|
+
- apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
|
6814
6894
|
- username: Your Apple ID Username
|
6815
6895
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
6816
6896
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
@@ -6837,6 +6917,8 @@ public func sigh(adhoc: Bool = false,
|
|
6837
6917
|
skipInstall: Bool = false,
|
6838
6918
|
force: Bool = false,
|
6839
6919
|
appIdentifier: String,
|
6920
|
+
apiKeyPath: String? = nil,
|
6921
|
+
apiKey: [String: Any]? = nil,
|
6840
6922
|
username: String,
|
6841
6923
|
teamId: String? = nil,
|
6842
6924
|
teamName: String? = nil,
|
@@ -6859,6 +6941,8 @@ public func sigh(adhoc: Bool = false,
|
|
6859
6941
|
RubyCommand.Argument(name: "skip_install", value: skipInstall),
|
6860
6942
|
RubyCommand.Argument(name: "force", value: force),
|
6861
6943
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
6944
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
6945
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
6862
6946
|
RubyCommand.Argument(name: "username", value: username),
|
6863
6947
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
6864
6948
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
@@ -7600,7 +7684,9 @@ public func swiftlint(mode: Any = "lint",
|
|
7600
7684
|
- readonly: Only fetch existing certificates and profiles, don't generate new ones
|
7601
7685
|
- generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
|
7602
7686
|
- skipProvisioningProfiles: Skip syncing provisioning profiles
|
7603
|
-
- appIdentifier: The bundle identifier(s) of your app (comma-separated)
|
7687
|
+
- appIdentifier: The bundle identifier(s) of your app (comma-separated string or array of strings)
|
7688
|
+
- apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
7689
|
+
- apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
|
7604
7690
|
- username: Your Apple ID Username
|
7605
7691
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
7606
7692
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
@@ -7633,7 +7719,9 @@ public func swiftlint(mode: Any = "lint",
|
|
7633
7719
|
- templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
|
7634
7720
|
- profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
|
7635
7721
|
- failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
|
7722
|
+
- skipCertificateMatching: Set to true if there is no access to Apple developer portal but there are certificates, keys and profiles provided. Only works with match import action
|
7636
7723
|
- outputPath: Path in which to export certificates, key and profile
|
7724
|
+
- skipSetPartitionList: Skips setting the partition list (which can sometimes take a long time). Setting the partition list is usually needed to prevent Xcode from prompting to allow a cert to be used for signing
|
7637
7725
|
- verbose: Print out extra information and all commands
|
7638
7726
|
|
7639
7727
|
More information: https://docs.fastlane.tools/actions/match/
|
@@ -7644,7 +7732,9 @@ public func syncCodeSigning(type: String = "development",
|
|
7644
7732
|
generateAppleCerts: Bool = true,
|
7645
7733
|
skipProvisioningProfiles: Bool = false,
|
7646
7734
|
appIdentifier: [String],
|
7647
|
-
|
7735
|
+
apiKeyPath: String? = nil,
|
7736
|
+
apiKey: [String: Any]? = nil,
|
7737
|
+
username: String? = nil,
|
7648
7738
|
teamId: String? = nil,
|
7649
7739
|
teamName: String? = nil,
|
7650
7740
|
storageMode: String = "git",
|
@@ -7676,7 +7766,9 @@ public func syncCodeSigning(type: String = "development",
|
|
7676
7766
|
templateName: String? = nil,
|
7677
7767
|
profileName: String? = nil,
|
7678
7768
|
failOnNameTaken: Bool = false,
|
7769
|
+
skipCertificateMatching: Bool = false,
|
7679
7770
|
outputPath: String? = nil,
|
7771
|
+
skipSetPartitionList: Bool = false,
|
7680
7772
|
verbose: Bool = false)
|
7681
7773
|
{
|
7682
7774
|
let command = RubyCommand(commandID: "", methodName: "sync_code_signing", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
|
@@ -7685,6 +7777,8 @@ public func syncCodeSigning(type: String = "development",
|
|
7685
7777
|
RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
|
7686
7778
|
RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
|
7687
7779
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
7780
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
7781
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
7688
7782
|
RubyCommand.Argument(name: "username", value: username),
|
7689
7783
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
7690
7784
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
@@ -7717,7 +7811,9 @@ public func syncCodeSigning(type: String = "development",
|
|
7717
7811
|
RubyCommand.Argument(name: "template_name", value: templateName),
|
7718
7812
|
RubyCommand.Argument(name: "profile_name", value: profileName),
|
7719
7813
|
RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
|
7814
|
+
RubyCommand.Argument(name: "skip_certificate_matching", value: skipCertificateMatching),
|
7720
7815
|
RubyCommand.Argument(name: "output_path", value: outputPath),
|
7816
|
+
RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
|
7721
7817
|
RubyCommand.Argument(name: "verbose", value: verbose)])
|
7722
7818
|
_ = runner.executeCommand(command)
|
7723
7819
|
}
|
@@ -8403,7 +8499,7 @@ public func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/a
|
|
8403
8499
|
- skipScreenshots: Don't upload the screenshots
|
8404
8500
|
- skipMetadata: Don't upload the metadata (e.g. title, description). This will still upload screenshots
|
8405
8501
|
- skipAppVersionUpdate: Don’t create or update the app version that is being prepared for submission
|
8406
|
-
- force: Skip
|
8502
|
+
- force: Skip verification of HTML preview file
|
8407
8503
|
- overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
|
8408
8504
|
- submitForReview: Submit the new version for Review after uploading everything
|
8409
8505
|
- rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
|
@@ -8451,7 +8547,7 @@ public func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/a
|
|
8451
8547
|
|
8452
8548
|
Using _upload_to_app_store_ after _build_app_ and _capture_screenshots_ will automatically upload the latest ipa and screenshots with no other configuration.
|
8453
8549
|
|
8454
|
-
If you don't want
|
8550
|
+
If you don't want to verify an HTML preview for App Store builds, use the `:force` option.
|
8455
8551
|
This is useful when running _fastlane_ on your Continuous Integration server:
|
8456
8552
|
`_upload_to_app_store_(force: true)`
|
8457
8553
|
If your account is on multiple teams and you need to tell the `iTMSTransporter` which 'provider' to use, you can set the `:itc_provider` option to pass this info.
|
@@ -8477,7 +8573,7 @@ public func uploadToAppStore(apiKeyPath: String? = nil,
|
|
8477
8573
|
overwriteScreenshots: Bool = false,
|
8478
8574
|
submitForReview: Bool = false,
|
8479
8575
|
rejectIfPossible: Bool = false,
|
8480
|
-
automaticRelease: Bool =
|
8576
|
+
automaticRelease: Bool? = nil,
|
8481
8577
|
autoReleaseDate: Int? = nil,
|
8482
8578
|
phasedRelease: Bool = false,
|
8483
8579
|
resetRatings: Bool = false,
|
@@ -9163,7 +9259,7 @@ public func xcov(workspace: String? = nil,
|
|
9163
9259
|
coverallsServiceJobId: String? = nil,
|
9164
9260
|
coverallsRepoToken: String? = nil,
|
9165
9261
|
xcconfig: String? = nil,
|
9166
|
-
ideFoundationPath: String = "/Applications/Xcode-
|
9262
|
+
ideFoundationPath: String = "/Applications/Xcode-12.0.1.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
|
9167
9263
|
legacySupport: Bool = false)
|
9168
9264
|
{
|
9169
9265
|
let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
@@ -9309,4 +9405,4 @@ public let snapshotfile = Snapshotfile()
|
|
9309
9405
|
|
9310
9406
|
// Please don't remove the lines below
|
9311
9407
|
// They are used to detect outdated files
|
9312
|
-
// FastlaneRunnerAPIVersion [0.9.
|
9408
|
+
// FastlaneRunnerAPIVersion [0.9.102]
|