fastlane 2.161.0 → 2.162.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 +76 -76
- data/cert/lib/cert/options.rb +28 -1
- data/cert/lib/cert/runner.rb +50 -33
- data/deliver/lib/deliver/app_screenshot_iterator.rb +4 -4
- data/deliver/lib/deliver/options.rb +2 -2
- data/deliver/lib/deliver/upload_metadata.rb +1 -0
- data/deliver/lib/deliver/upload_screenshots.rb +25 -8
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +1 -1
- data/fastlane/swift/Fastlane.swift +51 -3
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +15 -3
- 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 +1 -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_core/lib/fastlane_core/analytics/analytics_session.rb +6 -7
- data/fastlane_core/lib/fastlane_core/keychain_importer.rb +2 -2
- data/match/lib/match/generator.rb +6 -1
- data/match/lib/match/importer.rb +39 -6
- data/match/lib/match/migrate.rb +13 -2
- data/match/lib/match/nuke.rb +65 -22
- data/match/lib/match/options.rb +26 -1
- 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/sigh/lib/sigh/options.rb +21 -0
- data/sigh/lib/sigh/runner.rb +80 -38
- data/spaceship/lib/spaceship/client.rb +2 -1
- data/spaceship/lib/spaceship/connect_api.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/api_client.rb +3 -3
- data/spaceship/lib/spaceship/connect_api/client.rb +13 -3
- 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/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 +28 -2
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +13 -0
- data/spaceship/lib/spaceship/connect_api/users/users.rb +40 -0
- metadata +19 -18
@@ -52,10 +52,10 @@ module Deliver
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
-
# Iterate given local app_screenshot over localizations and app_screenshot_sets
|
55
|
+
# Iterate given local app_screenshot over localizations and app_screenshot_sets
|
56
56
|
#
|
57
57
|
# @param screenshots_per_language [Hash<String, Array<Deliver::AppScreenshot>]
|
58
|
-
# @yield [localization, app_screenshot_set, app_screenshot
|
58
|
+
# @yield [localization, app_screenshot_set, app_screenshot]
|
59
59
|
# @yieldparam [optional, Spaceship::ConnectAPI::AppStoreVersionLocalization] localization
|
60
60
|
# @yieldparam [optional, Spaceship::ConnectAPI::AppStoreScreenshotSet] app_screenshot_set
|
61
61
|
# @yieldparam [optional, Deliver::AppScreenshot] screenshot
|
@@ -85,8 +85,8 @@ module Deliver
|
|
85
85
|
app_screenshot_set ||= localization.create_app_screenshot_set(attributes: { screenshotDisplayType: display_type })
|
86
86
|
|
87
87
|
# iterate over screenshots per display size with index
|
88
|
-
screenshots.each
|
89
|
-
yield(localization, app_screenshot_set, screenshot
|
88
|
+
screenshots.each do |screenshot|
|
89
|
+
yield(localization, app_screenshot_set, screenshot)
|
90
90
|
end
|
91
91
|
end
|
92
92
|
end
|
@@ -16,7 +16,7 @@ module Deliver
|
|
16
16
|
env_name: "DELIVER_API_KEY_PATH",
|
17
17
|
description: "Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)",
|
18
18
|
optional: true,
|
19
|
-
conflicting_options: [:
|
19
|
+
conflicting_options: [:api_key],
|
20
20
|
verify_block: proc do |value|
|
21
21
|
UI.user_error!("Couldn't find API key JSON file at path '#{value}'") unless File.exist?(value)
|
22
22
|
end),
|
@@ -26,7 +26,7 @@ module Deliver
|
|
26
26
|
type: Hash,
|
27
27
|
optional: true,
|
28
28
|
sensitive: true,
|
29
|
-
conflicting_options: [:api_key_path
|
29
|
+
conflicting_options: [:api_key_path]),
|
30
30
|
|
31
31
|
FastlaneCore::ConfigItem.new(key: :username,
|
32
32
|
short_option: "-u",
|
@@ -584,6 +584,7 @@ module Deliver
|
|
584
584
|
def set_review_information(version, options)
|
585
585
|
return unless options[:app_review_information]
|
586
586
|
info = options[:app_review_information]
|
587
|
+
info = info.collect { |k, v| [k.to_sym, v] }.to_h
|
587
588
|
UI.user_error!("`app_review_information` must be a hash", show_github_issues: true) unless info.kind_of?(Hash)
|
588
589
|
|
589
590
|
attributes = {}
|
@@ -126,10 +126,16 @@ module Deliver
|
|
126
126
|
end
|
127
127
|
end
|
128
128
|
|
129
|
-
|
129
|
+
# Each app_screenshot_set can have only 10 images
|
130
|
+
number_of_screenshots_per_set = {}
|
131
|
+
total_number_of_screenshots = 0
|
132
|
+
|
130
133
|
iterator = AppScreenshotIterator.new(localizations)
|
131
|
-
iterator.each_local_screenshot(screenshots_per_language) do |localization, app_screenshot_set, screenshot
|
132
|
-
|
134
|
+
iterator.each_local_screenshot(screenshots_per_language) do |localization, app_screenshot_set, screenshot|
|
135
|
+
# Initialize counter on each app screenshot set
|
136
|
+
number_of_screenshots_per_set[app_screenshot_set] ||= (app_screenshot_set.app_screenshots || []).count
|
137
|
+
|
138
|
+
if number_of_screenshots_per_set[app_screenshot_set] >= 10
|
133
139
|
UI.error("Too many screenshots found for device '#{screenshot.device_type}' in '#{screenshot.language}', skipping this one (#{screenshot.path})")
|
134
140
|
next
|
135
141
|
end
|
@@ -141,10 +147,12 @@ module Deliver
|
|
141
147
|
if duplicate
|
142
148
|
UI.message("Previous uploaded. Skipping '#{screenshot.path}'...")
|
143
149
|
else
|
150
|
+
UI.verbose("Queued uplaod sceeenshot job for #{localization.locale} #{app_screenshot_set.screenshot_display_type} #{screenshot.path}")
|
144
151
|
worker.enqueue(UploadScreenshotJob.new(app_screenshot_set, screenshot.path))
|
152
|
+
number_of_screenshots_per_set[app_screenshot_set] += 1
|
145
153
|
end
|
146
154
|
|
147
|
-
|
155
|
+
total_number_of_screenshots += 1
|
148
156
|
end
|
149
157
|
|
150
158
|
worker.start
|
@@ -154,7 +162,7 @@ module Deliver
|
|
154
162
|
Helper.show_loading_indicator("Waiting for all the screenshots processed...")
|
155
163
|
states = wait_for_complete(iterator)
|
156
164
|
Helper.hide_loading_indicator
|
157
|
-
retry_upload_screenshots_if_needed(iterator, states,
|
165
|
+
retry_upload_screenshots_if_needed(iterator, states, total_number_of_screenshots, tries, localizations, screenshots_per_language)
|
158
166
|
|
159
167
|
UI.message("Successfully uploaded all screenshots")
|
160
168
|
end
|
@@ -203,12 +211,21 @@ module Deliver
|
|
203
211
|
# Check if local screenshots' checksum exist on App Store Connect
|
204
212
|
checksum_to_app_screenshot = iterator.each_app_screenshot.map { |_, _, app_screenshot| [app_screenshot.source_file_checksum, app_screenshot] }.to_h
|
205
213
|
|
206
|
-
|
214
|
+
number_of_screenshots_per_set = {}
|
215
|
+
missing_local_screenshots = iterator.each_local_screenshot(screenshots_per_language).select do |_, app_screenshot_set, local_screenshot|
|
216
|
+
number_of_screenshots_per_set[app_screenshot_set] ||= (app_screenshot_set.app_screenshots || []).count
|
207
217
|
checksum = UploadScreenshots.calculate_checksum(local_screenshot.path)
|
208
|
-
|
218
|
+
|
219
|
+
if checksum_to_app_screenshot[checksum]
|
220
|
+
next(false)
|
221
|
+
else
|
222
|
+
is_missing = number_of_screenshots_per_set[app_screenshot_set] < 10 # if it's more than 10, it's skipped
|
223
|
+
number_of_screenshots_per_set[app_screenshot_set] += 1
|
224
|
+
next(is_missing)
|
225
|
+
end
|
209
226
|
end
|
210
227
|
|
211
|
-
missing_local_screenshots.each do |_, _, screenshot
|
228
|
+
missing_local_screenshots.each do |_, _, screenshot|
|
212
229
|
UI.error("#{screenshot.path} is missing on App Store Connect.")
|
213
230
|
end
|
214
231
|
|
@@ -1844,6 +1844,8 @@ public func carthage(command: String = "bootstrap",
|
|
1844
1844
|
- type: Create specific certificate type (takes precedence over :development)
|
1845
1845
|
- force: Create a certificate even if an existing certificate exists
|
1846
1846
|
- generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
|
1847
|
+
- 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)
|
1848
|
+
- 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
1849
|
- username: Your Apple ID Username
|
1848
1850
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
1849
1851
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
@@ -1851,6 +1853,7 @@ public func carthage(command: String = "bootstrap",
|
|
1851
1853
|
- outputPath: The path to a directory in which all certificates and private keys should be stored
|
1852
1854
|
- keychainPath: Path to a custom keychain
|
1853
1855
|
- 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
|
1856
|
+
- 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
1857
|
- platform: Set the provisioning profile's platform (ios, macos)
|
1855
1858
|
|
1856
1859
|
**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 +1863,8 @@ public func cert(development: Bool = false,
|
|
1860
1863
|
type: String? = nil,
|
1861
1864
|
force: Bool = false,
|
1862
1865
|
generateAppleCerts: Bool = true,
|
1866
|
+
apiKeyPath: String? = nil,
|
1867
|
+
apiKey: [String: Any]? = nil,
|
1863
1868
|
username: String,
|
1864
1869
|
teamId: String? = nil,
|
1865
1870
|
teamName: String? = nil,
|
@@ -1867,12 +1872,15 @@ public func cert(development: Bool = false,
|
|
1867
1872
|
outputPath: String = ".",
|
1868
1873
|
keychainPath: String,
|
1869
1874
|
keychainPassword: String? = nil,
|
1875
|
+
skipSetPartitionList: Bool = false,
|
1870
1876
|
platform: String = "ios")
|
1871
1877
|
{
|
1872
1878
|
let command = RubyCommand(commandID: "", methodName: "cert", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
|
1873
1879
|
RubyCommand.Argument(name: "type", value: type),
|
1874
1880
|
RubyCommand.Argument(name: "force", value: force),
|
1875
1881
|
RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
|
1882
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
1883
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
1876
1884
|
RubyCommand.Argument(name: "username", value: username),
|
1877
1885
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
1878
1886
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
@@ -1880,6 +1888,7 @@ public func cert(development: Bool = false,
|
|
1880
1888
|
RubyCommand.Argument(name: "output_path", value: outputPath),
|
1881
1889
|
RubyCommand.Argument(name: "keychain_path", value: keychainPath),
|
1882
1890
|
RubyCommand.Argument(name: "keychain_password", value: keychainPassword),
|
1891
|
+
RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
|
1883
1892
|
RubyCommand.Argument(name: "platform", value: platform)])
|
1884
1893
|
_ = runner.executeCommand(command)
|
1885
1894
|
}
|
@@ -3323,6 +3332,8 @@ public func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
|
|
3323
3332
|
- type: Create specific certificate type (takes precedence over :development)
|
3324
3333
|
- force: Create a certificate even if an existing certificate exists
|
3325
3334
|
- generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
|
3335
|
+
- 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)
|
3336
|
+
- 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
3337
|
- username: Your Apple ID Username
|
3327
3338
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
3328
3339
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
@@ -3330,6 +3341,7 @@ public func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
|
|
3330
3341
|
- outputPath: The path to a directory in which all certificates and private keys should be stored
|
3331
3342
|
- keychainPath: Path to a custom keychain
|
3332
3343
|
- 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
|
3344
|
+
- 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
3345
|
- platform: Set the provisioning profile's platform (ios, macos)
|
3334
3346
|
|
3335
3347
|
**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 +3351,8 @@ public func getCertificates(development: Bool = false,
|
|
3339
3351
|
type: String? = nil,
|
3340
3352
|
force: Bool = false,
|
3341
3353
|
generateAppleCerts: Bool = true,
|
3354
|
+
apiKeyPath: String? = nil,
|
3355
|
+
apiKey: [String: Any]? = nil,
|
3342
3356
|
username: String,
|
3343
3357
|
teamId: String? = nil,
|
3344
3358
|
teamName: String? = nil,
|
@@ -3346,12 +3360,15 @@ public func getCertificates(development: Bool = false,
|
|
3346
3360
|
outputPath: String = ".",
|
3347
3361
|
keychainPath: String,
|
3348
3362
|
keychainPassword: String? = nil,
|
3363
|
+
skipSetPartitionList: Bool = false,
|
3349
3364
|
platform: String = "ios")
|
3350
3365
|
{
|
3351
3366
|
let command = RubyCommand(commandID: "", methodName: "get_certificates", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
|
3352
3367
|
RubyCommand.Argument(name: "type", value: type),
|
3353
3368
|
RubyCommand.Argument(name: "force", value: force),
|
3354
3369
|
RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
|
3370
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
3371
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
3355
3372
|
RubyCommand.Argument(name: "username", value: username),
|
3356
3373
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
3357
3374
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
@@ -3359,6 +3376,7 @@ public func getCertificates(development: Bool = false,
|
|
3359
3376
|
RubyCommand.Argument(name: "output_path", value: outputPath),
|
3360
3377
|
RubyCommand.Argument(name: "keychain_path", value: keychainPath),
|
3361
3378
|
RubyCommand.Argument(name: "keychain_password", value: keychainPassword),
|
3379
|
+
RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
|
3362
3380
|
RubyCommand.Argument(name: "platform", value: platform)])
|
3363
3381
|
_ = runner.executeCommand(command)
|
3364
3382
|
}
|
@@ -3495,6 +3513,8 @@ public func getManagedPlayStorePublishingRights(jsonKey: String? = nil,
|
|
3495
3513
|
- skipInstall: By default, the certificate will be added to your local machine. Setting this flag will skip this action
|
3496
3514
|
- force: Renew provisioning profiles regardless of its state - to automatically add all devices for ad hoc profiles
|
3497
3515
|
- appIdentifier: The bundle identifier of your app
|
3516
|
+
- 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)
|
3517
|
+
- 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
3518
|
- username: Your Apple ID Username
|
3499
3519
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
3500
3520
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
@@ -3521,6 +3541,8 @@ public func getProvisioningProfile(adhoc: Bool = false,
|
|
3521
3541
|
skipInstall: Bool = false,
|
3522
3542
|
force: Bool = false,
|
3523
3543
|
appIdentifier: String,
|
3544
|
+
apiKeyPath: String? = nil,
|
3545
|
+
apiKey: [String: Any]? = nil,
|
3524
3546
|
username: String,
|
3525
3547
|
teamId: String? = nil,
|
3526
3548
|
teamName: String? = nil,
|
@@ -3543,6 +3565,8 @@ public func getProvisioningProfile(adhoc: Bool = false,
|
|
3543
3565
|
RubyCommand.Argument(name: "skip_install", value: skipInstall),
|
3544
3566
|
RubyCommand.Argument(name: "force", value: force),
|
3545
3567
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
3568
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
3569
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
3546
3570
|
RubyCommand.Argument(name: "username", value: username),
|
3547
3571
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
3548
3572
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
@@ -4710,6 +4734,8 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
4710
4734
|
- generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
|
4711
4735
|
- skipProvisioningProfiles: Skip syncing provisioning profiles
|
4712
4736
|
- appIdentifier: The bundle identifier(s) of your app (comma-separated)
|
4737
|
+
- 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)
|
4738
|
+
- 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
4739
|
- username: Your Apple ID Username
|
4714
4740
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
4715
4741
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
@@ -4743,6 +4769,7 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
4743
4769
|
- profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
|
4744
4770
|
- 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
|
4745
4771
|
- outputPath: Path in which to export certificates, key and profile
|
4772
|
+
- 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
4773
|
- verbose: Print out extra information and all commands
|
4747
4774
|
|
4748
4775
|
More information: https://docs.fastlane.tools/actions/match/
|
@@ -4753,7 +4780,9 @@ public func match(type: Any = matchfile.type,
|
|
4753
4780
|
generateAppleCerts: Bool = matchfile.generateAppleCerts,
|
4754
4781
|
skipProvisioningProfiles: Bool = matchfile.skipProvisioningProfiles,
|
4755
4782
|
appIdentifier: [String] = matchfile.appIdentifier,
|
4756
|
-
|
4783
|
+
apiKeyPath: Any? = matchfile.apiKeyPath,
|
4784
|
+
apiKey: [String: Any]? = matchfile.apiKey,
|
4785
|
+
username: Any? = matchfile.username,
|
4757
4786
|
teamId: Any? = matchfile.teamId,
|
4758
4787
|
teamName: Any? = matchfile.teamName,
|
4759
4788
|
storageMode: Any = matchfile.storageMode,
|
@@ -4786,6 +4815,7 @@ public func match(type: Any = matchfile.type,
|
|
4786
4815
|
profileName: Any? = matchfile.profileName,
|
4787
4816
|
failOnNameTaken: Bool = matchfile.failOnNameTaken,
|
4788
4817
|
outputPath: Any? = matchfile.outputPath,
|
4818
|
+
skipSetPartitionList: Bool = matchfile.skipSetPartitionList,
|
4789
4819
|
verbose: Bool = matchfile.verbose)
|
4790
4820
|
{
|
4791
4821
|
let command = RubyCommand(commandID: "", methodName: "match", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
|
@@ -4794,6 +4824,8 @@ public func match(type: Any = matchfile.type,
|
|
4794
4824
|
RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
|
4795
4825
|
RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
|
4796
4826
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
4827
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
4828
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
4797
4829
|
RubyCommand.Argument(name: "username", value: username),
|
4798
4830
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
4799
4831
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
@@ -4827,6 +4859,7 @@ public func match(type: Any = matchfile.type,
|
|
4827
4859
|
RubyCommand.Argument(name: "profile_name", value: profileName),
|
4828
4860
|
RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
|
4829
4861
|
RubyCommand.Argument(name: "output_path", value: outputPath),
|
4862
|
+
RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
|
4830
4863
|
RubyCommand.Argument(name: "verbose", value: verbose)])
|
4831
4864
|
_ = runner.executeCommand(command)
|
4832
4865
|
}
|
@@ -6811,6 +6844,8 @@ public func setupTravis(force: Bool = false) {
|
|
6811
6844
|
- skipInstall: By default, the certificate will be added to your local machine. Setting this flag will skip this action
|
6812
6845
|
- force: Renew provisioning profiles regardless of its state - to automatically add all devices for ad hoc profiles
|
6813
6846
|
- appIdentifier: The bundle identifier of your app
|
6847
|
+
- 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)
|
6848
|
+
- 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
6849
|
- username: Your Apple ID Username
|
6815
6850
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
6816
6851
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
@@ -6837,6 +6872,8 @@ public func sigh(adhoc: Bool = false,
|
|
6837
6872
|
skipInstall: Bool = false,
|
6838
6873
|
force: Bool = false,
|
6839
6874
|
appIdentifier: String,
|
6875
|
+
apiKeyPath: String? = nil,
|
6876
|
+
apiKey: [String: Any]? = nil,
|
6840
6877
|
username: String,
|
6841
6878
|
teamId: String? = nil,
|
6842
6879
|
teamName: String? = nil,
|
@@ -6859,6 +6896,8 @@ public func sigh(adhoc: Bool = false,
|
|
6859
6896
|
RubyCommand.Argument(name: "skip_install", value: skipInstall),
|
6860
6897
|
RubyCommand.Argument(name: "force", value: force),
|
6861
6898
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
6899
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
6900
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
6862
6901
|
RubyCommand.Argument(name: "username", value: username),
|
6863
6902
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
6864
6903
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
@@ -7601,6 +7640,8 @@ public func swiftlint(mode: Any = "lint",
|
|
7601
7640
|
- generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
|
7602
7641
|
- skipProvisioningProfiles: Skip syncing provisioning profiles
|
7603
7642
|
- appIdentifier: The bundle identifier(s) of your app (comma-separated)
|
7643
|
+
- 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)
|
7644
|
+
- 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
7645
|
- username: Your Apple ID Username
|
7605
7646
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
7606
7647
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
@@ -7634,6 +7675,7 @@ public func swiftlint(mode: Any = "lint",
|
|
7634
7675
|
- profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
|
7635
7676
|
- 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
|
7636
7677
|
- outputPath: Path in which to export certificates, key and profile
|
7678
|
+
- 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
7679
|
- verbose: Print out extra information and all commands
|
7638
7680
|
|
7639
7681
|
More information: https://docs.fastlane.tools/actions/match/
|
@@ -7644,7 +7686,9 @@ public func syncCodeSigning(type: String = "development",
|
|
7644
7686
|
generateAppleCerts: Bool = true,
|
7645
7687
|
skipProvisioningProfiles: Bool = false,
|
7646
7688
|
appIdentifier: [String],
|
7647
|
-
|
7689
|
+
apiKeyPath: String? = nil,
|
7690
|
+
apiKey: [String: Any]? = nil,
|
7691
|
+
username: String? = nil,
|
7648
7692
|
teamId: String? = nil,
|
7649
7693
|
teamName: String? = nil,
|
7650
7694
|
storageMode: String = "git",
|
@@ -7677,6 +7721,7 @@ public func syncCodeSigning(type: String = "development",
|
|
7677
7721
|
profileName: String? = nil,
|
7678
7722
|
failOnNameTaken: Bool = false,
|
7679
7723
|
outputPath: String? = nil,
|
7724
|
+
skipSetPartitionList: Bool = false,
|
7680
7725
|
verbose: Bool = false)
|
7681
7726
|
{
|
7682
7727
|
let command = RubyCommand(commandID: "", methodName: "sync_code_signing", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
|
@@ -7685,6 +7730,8 @@ public func syncCodeSigning(type: String = "development",
|
|
7685
7730
|
RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
|
7686
7731
|
RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
|
7687
7732
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
7733
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
7734
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
7688
7735
|
RubyCommand.Argument(name: "username", value: username),
|
7689
7736
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
7690
7737
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
@@ -7718,6 +7765,7 @@ public func syncCodeSigning(type: String = "development",
|
|
7718
7765
|
RubyCommand.Argument(name: "profile_name", value: profileName),
|
7719
7766
|
RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
|
7720
7767
|
RubyCommand.Argument(name: "output_path", value: outputPath),
|
7768
|
+
RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
|
7721
7769
|
RubyCommand.Argument(name: "verbose", value: verbose)])
|
7722
7770
|
_ = runner.executeCommand(command)
|
7723
7771
|
}
|
@@ -9309,4 +9357,4 @@ public let snapshotfile = Snapshotfile()
|
|
9309
9357
|
|
9310
9358
|
// Please don't remove the lines below
|
9311
9359
|
// They are used to detect outdated files
|
9312
|
-
// FastlaneRunnerAPIVersion [0.9.
|
9360
|
+
// FastlaneRunnerAPIVersion [0.9.98]
|
@@ -20,8 +20,14 @@ public protocol MatchfileProtocol: class {
|
|
20
20
|
/// The bundle identifier(s) of your app (comma-separated)
|
21
21
|
var appIdentifier: [String] { get }
|
22
22
|
|
23
|
+
/// Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
24
|
+
var apiKeyPath: String? { get }
|
25
|
+
|
26
|
+
/// Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
|
27
|
+
var apiKey: [String: Any]? { get }
|
28
|
+
|
23
29
|
/// Your Apple ID Username
|
24
|
-
var username: String { get }
|
30
|
+
var username: String? { get }
|
25
31
|
|
26
32
|
/// The ID of your Developer Portal team if you're in multiple teams
|
27
33
|
var teamId: String? { get }
|
@@ -119,6 +125,9 @@ public protocol MatchfileProtocol: class {
|
|
119
125
|
/// Path in which to export certificates, key and profile
|
120
126
|
var outputPath: String? { get }
|
121
127
|
|
128
|
+
/// 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
|
129
|
+
var skipSetPartitionList: Bool { get }
|
130
|
+
|
122
131
|
/// Print out extra information and all commands
|
123
132
|
var verbose: Bool { get }
|
124
133
|
}
|
@@ -130,7 +139,9 @@ public extension MatchfileProtocol {
|
|
130
139
|
var generateAppleCerts: Bool { return true }
|
131
140
|
var skipProvisioningProfiles: Bool { return false }
|
132
141
|
var appIdentifier: [String] { return [] }
|
133
|
-
var
|
142
|
+
var apiKeyPath: String? { return nil }
|
143
|
+
var apiKey: [String: Any]? { return nil }
|
144
|
+
var username: String? { return nil }
|
134
145
|
var teamId: String? { return nil }
|
135
146
|
var teamName: String? { return nil }
|
136
147
|
var storageMode: String { return "git" }
|
@@ -163,9 +174,10 @@ public extension MatchfileProtocol {
|
|
163
174
|
var profileName: String? { return nil }
|
164
175
|
var failOnNameTaken: Bool { return false }
|
165
176
|
var outputPath: String? { return nil }
|
177
|
+
var skipSetPartitionList: Bool { return false }
|
166
178
|
var verbose: Bool { return false }
|
167
179
|
}
|
168
180
|
|
169
181
|
// Please don't remove the lines below
|
170
182
|
// They are used to detect outdated files
|
171
|
-
// FastlaneRunnerAPIVersion [0.9.
|
183
|
+
// FastlaneRunnerAPIVersion [0.9.42]
|