fastlane 2.160.0 → 2.165.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +78 -78
- data/cert/lib/cert/options.rb +28 -1
- data/cert/lib/cert/runner.rb +51 -34
- 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 +20 -1
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +39 -3
- data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +15 -1
- data/fastlane/lib/fastlane/actions/check_app_store_metadata.rb +1 -0
- data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/create_app_online.md +1 -1
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/run_tests.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +12 -3
- data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +1 -1
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +1 -0
- data/fastlane/lib/fastlane/actions/ensure_git_status_clean.rb +13 -2
- 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/upload_to_app_store.rb +3 -2
- data/fastlane/lib/fastlane/fast_file.rb +74 -23
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +1 -0
- 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 +120 -27
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +1 -1
- data/fastlane/swift/LaneFileProtocol.swift +28 -36
- data/fastlane/swift/MainProcess.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +21 -5
- 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/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 +1 -1
- 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 +34 -3
- 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 +5 -8
- 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/spaceship/README.md +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 +75 -1
- data/spaceship/lib/spaceship/connect_api/users/users.rb +40 -0
- data/spaceship/lib/spaceship/helper/net_http_generic_request.rb +11 -5
- data/supply/lib/supply/uploader.rb +1 -1
- metadata +19 -15
@@ -6,9 +6,14 @@ module Fastlane
|
|
6
6
|
|
7
7
|
# Team selection passed though FASTLANE_ITC_TEAM_ID and FASTLANE_ITC_TEAM_NAME environment variables
|
8
8
|
# Prompts select team if multiple teams and none specified
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
if (token = self.api_token(params))
|
10
|
+
UI.message("Using App Store Connect API token...")
|
11
|
+
Spaceship::ConnectAPI.token = token
|
12
|
+
else
|
13
|
+
UI.message("Login to App Store Connect (#{params[:username]})")
|
14
|
+
Spaceship::ConnectAPI.login(params[:username], use_portal: false, use_tunes: true, tunes_team_id: params[:team_id], team_name: params[:team_name])
|
15
|
+
UI.message("Login successful")
|
16
|
+
end
|
12
17
|
|
13
18
|
app = Spaceship::ConnectAPI::App.find(params[:app_identifier])
|
14
19
|
UI.user_error!("Couldn't find app with identifier #{params[:app_identifier]}") if app.nil?
|
@@ -73,6 +78,13 @@ module Fastlane
|
|
73
78
|
UI.success("👼 Successfully pushed the new changelog to for #{edit_version.version_string}")
|
74
79
|
end
|
75
80
|
|
81
|
+
def self.api_token(params)
|
82
|
+
params[:api_key] ||= Actions.lane_context[SharedValues::APP_STORE_CONNECT_API_KEY]
|
83
|
+
api_token ||= Spaceship::ConnectAPI::Token.create(params[:api_key]) if params[:api_key]
|
84
|
+
api_token ||= Spaceship::ConnectAPI::Token.from_json_file(params[:api_key_path]) if params[:api_key_path]
|
85
|
+
return api_token
|
86
|
+
end
|
87
|
+
|
76
88
|
def self.default_changelog_path
|
77
89
|
File.join(FastlaneCore::FastlaneFolder.path.to_s, 'changelog.txt')
|
78
90
|
end
|
@@ -98,6 +110,21 @@ module Fastlane
|
|
98
110
|
user ||= CredentialsManager::AppfileConfig.try_fetch_value(:apple_id)
|
99
111
|
|
100
112
|
[
|
113
|
+
FastlaneCore::ConfigItem.new(key: :api_key_path,
|
114
|
+
env_name: "FL_SET_CHANGELOG_API_KEY_PATH",
|
115
|
+
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)",
|
116
|
+
optional: true,
|
117
|
+
conflicting_options: [:api_key],
|
118
|
+
verify_block: proc do |value|
|
119
|
+
UI.user_error!("Couldn't find API key JSON file at path '#{value}'") unless File.exist?(value)
|
120
|
+
end),
|
121
|
+
FastlaneCore::ConfigItem.new(key: :api_key,
|
122
|
+
env_name: "FL_SET_CHANGELOG_API_KEY",
|
123
|
+
description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)",
|
124
|
+
type: Hash,
|
125
|
+
optional: true,
|
126
|
+
sensitive: true,
|
127
|
+
conflicting_options: [:api_key_path]),
|
101
128
|
FastlaneCore::ConfigItem.new(key: :app_identifier,
|
102
129
|
short_option: "-a",
|
103
130
|
env_name: "FASTLANE_APP_IDENTIFIER",
|
@@ -109,6 +136,7 @@ module Fastlane
|
|
109
136
|
short_option: "-u",
|
110
137
|
env_name: "FASTLANE_USERNAME",
|
111
138
|
description: "Your Apple ID Username",
|
139
|
+
optional: true,
|
112
140
|
default_value: user,
|
113
141
|
default_value_dynamic: true),
|
114
142
|
FastlaneCore::ConfigItem.new(key: :version,
|
@@ -12,6 +12,7 @@ module Fastlane
|
|
12
12
|
config[:screenshots_path] = Actions.lane_context[SharedValues::SNAPSHOT_SCREENSHOTS_PATH] if Actions.lane_context[SharedValues::SNAPSHOT_SCREENSHOTS_PATH]
|
13
13
|
config[:ipa] = Actions.lane_context[SharedValues::IPA_OUTPUT_PATH] if Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]
|
14
14
|
config[:pkg] = Actions.lane_context[SharedValues::PKG_OUTPUT_PATH] if Actions.lane_context[SharedValues::PKG_OUTPUT_PATH]
|
15
|
+
config[:api_key] ||= Actions.lane_context[SharedValues::APP_STORE_CONNECT_API_KEY]
|
15
16
|
|
16
17
|
return config if Helper.test?
|
17
18
|
Deliver::Runner.new(config).run
|
@@ -26,7 +27,7 @@ module Fastlane
|
|
26
27
|
[
|
27
28
|
"Using _upload_to_app_store_ after _build_app_ and _capture_screenshots_ will automatically upload the latest ipa and screenshots with no other configuration.",
|
28
29
|
"",
|
29
|
-
"If you don't want
|
30
|
+
"If you don't want to verify an HTML preview for App Store builds, use the `:force` option.",
|
30
31
|
"This is useful when running _fastlane_ on your Continuous Integration server:",
|
31
32
|
"`_upload_to_app_store_(force: true)`",
|
32
33
|
"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."
|
@@ -50,7 +51,7 @@ module Fastlane
|
|
50
51
|
def self.example_code
|
51
52
|
[
|
52
53
|
'upload_to_app_store(
|
53
|
-
force: true, # Set to true to skip
|
54
|
+
force: true, # Set to true to skip verification of HTML preview
|
54
55
|
itc_provider: "abcde12345" # pass a specific value to the iTMSTransporter -itc_provider option
|
55
56
|
)',
|
56
57
|
'deliver # alias for "upload_to_app_store"',
|
@@ -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
|
@@ -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.48]
|
@@ -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,
|
@@ -3006,16 +3024,19 @@ public func ensureGitBranch(branch: String = "master") {
|
|
3006
3024
|
- parameters:
|
3007
3025
|
- showUncommittedChanges: The flag whether to show uncommitted changes if the repo is dirty
|
3008
3026
|
- showDiff: The flag whether to show the git diff if the repo is dirty
|
3027
|
+
- ignored: The flag whether to ignore file the git status if the repo is dirty
|
3009
3028
|
|
3010
3029
|
A sanity check to make sure you are working in a repo that is clean.
|
3011
3030
|
Especially useful to put at the beginning of your Fastfile in the `before_all` block, if some of your other actions will touch your filesystem, do things to your git repo, or just as a general reminder to save your work.
|
3012
3031
|
Also needed as a prerequisite for some other actions like `reset_git_repo`.
|
3013
3032
|
*/
|
3014
3033
|
public func ensureGitStatusClean(showUncommittedChanges: Bool = false,
|
3015
|
-
showDiff: Bool = false
|
3034
|
+
showDiff: Bool = false,
|
3035
|
+
ignored: String? = nil)
|
3016
3036
|
{
|
3017
3037
|
let command = RubyCommand(commandID: "", methodName: "ensure_git_status_clean", className: nil, args: [RubyCommand.Argument(name: "show_uncommitted_changes", value: showUncommittedChanges),
|
3018
|
-
RubyCommand.Argument(name: "show_diff", value: showDiff)
|
3038
|
+
RubyCommand.Argument(name: "show_diff", value: showDiff),
|
3039
|
+
RubyCommand.Argument(name: "ignored", value: ignored)])
|
3019
3040
|
_ = runner.executeCommand(command)
|
3020
3041
|
}
|
3021
3042
|
|
@@ -3320,6 +3341,8 @@ public func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
|
|
3320
3341
|
- type: Create specific certificate type (takes precedence over :development)
|
3321
3342
|
- force: Create a certificate even if an existing certificate exists
|
3322
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)
|
3323
3346
|
- username: Your Apple ID Username
|
3324
3347
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
3325
3348
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
@@ -3327,6 +3350,7 @@ public func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
|
|
3327
3350
|
- outputPath: The path to a directory in which all certificates and private keys should be stored
|
3328
3351
|
- keychainPath: Path to a custom keychain
|
3329
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
|
3330
3354
|
- platform: Set the provisioning profile's platform (ios, macos)
|
3331
3355
|
|
3332
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.
|
@@ -3336,6 +3360,8 @@ public func getCertificates(development: Bool = false,
|
|
3336
3360
|
type: String? = nil,
|
3337
3361
|
force: Bool = false,
|
3338
3362
|
generateAppleCerts: Bool = true,
|
3363
|
+
apiKeyPath: String? = nil,
|
3364
|
+
apiKey: [String: Any]? = nil,
|
3339
3365
|
username: String,
|
3340
3366
|
teamId: String? = nil,
|
3341
3367
|
teamName: String? = nil,
|
@@ -3343,12 +3369,15 @@ public func getCertificates(development: Bool = false,
|
|
3343
3369
|
outputPath: String = ".",
|
3344
3370
|
keychainPath: String,
|
3345
3371
|
keychainPassword: String? = nil,
|
3372
|
+
skipSetPartitionList: Bool = false,
|
3346
3373
|
platform: String = "ios")
|
3347
3374
|
{
|
3348
3375
|
let command = RubyCommand(commandID: "", methodName: "get_certificates", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
|
3349
3376
|
RubyCommand.Argument(name: "type", value: type),
|
3350
3377
|
RubyCommand.Argument(name: "force", value: force),
|
3351
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),
|
3352
3381
|
RubyCommand.Argument(name: "username", value: username),
|
3353
3382
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
3354
3383
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
@@ -3356,6 +3385,7 @@ public func getCertificates(development: Bool = false,
|
|
3356
3385
|
RubyCommand.Argument(name: "output_path", value: outputPath),
|
3357
3386
|
RubyCommand.Argument(name: "keychain_path", value: keychainPath),
|
3358
3387
|
RubyCommand.Argument(name: "keychain_password", value: keychainPassword),
|
3388
|
+
RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
|
3359
3389
|
RubyCommand.Argument(name: "platform", value: platform)])
|
3360
3390
|
_ = runner.executeCommand(command)
|
3361
3391
|
}
|
@@ -3492,6 +3522,8 @@ public func getManagedPlayStorePublishingRights(jsonKey: String? = nil,
|
|
3492
3522
|
- skipInstall: By default, the certificate will be added to your local machine. Setting this flag will skip this action
|
3493
3523
|
- force: Renew provisioning profiles regardless of its state - to automatically add all devices for ad hoc profiles
|
3494
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)
|
3495
3527
|
- username: Your Apple ID Username
|
3496
3528
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
3497
3529
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
@@ -3518,6 +3550,8 @@ public func getProvisioningProfile(adhoc: Bool = false,
|
|
3518
3550
|
skipInstall: Bool = false,
|
3519
3551
|
force: Bool = false,
|
3520
3552
|
appIdentifier: String,
|
3553
|
+
apiKeyPath: String? = nil,
|
3554
|
+
apiKey: [String: Any]? = nil,
|
3521
3555
|
username: String,
|
3522
3556
|
teamId: String? = nil,
|
3523
3557
|
teamName: String? = nil,
|
@@ -3540,6 +3574,8 @@ public func getProvisioningProfile(adhoc: Bool = false,
|
|
3540
3574
|
RubyCommand.Argument(name: "skip_install", value: skipInstall),
|
3541
3575
|
RubyCommand.Argument(name: "force", value: force),
|
3542
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),
|
3543
3579
|
RubyCommand.Argument(name: "username", value: username),
|
3544
3580
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
3545
3581
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
@@ -4568,6 +4604,8 @@ public func jira(url: String,
|
|
4568
4604
|
Fetches most recent build number from TestFlight
|
4569
4605
|
|
4570
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)
|
4571
4609
|
- live: Query the live version (ready-for-sale)
|
4572
4610
|
- appIdentifier: The bundle identifier of your app
|
4573
4611
|
- username: Your Apple ID Username
|
@@ -4582,7 +4620,9 @@ public func jira(url: String,
|
|
4582
4620
|
Provides a way to have `increment_build_number` be based on the latest build you uploaded to iTC.
|
4583
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.
|
4584
4622
|
*/
|
4585
|
-
@discardableResult public func latestTestflightBuildNumber(
|
4623
|
+
@discardableResult public func latestTestflightBuildNumber(apiKeyPath: String? = nil,
|
4624
|
+
apiKey: [String: Any]? = nil,
|
4625
|
+
live: Bool = false,
|
4586
4626
|
appIdentifier: String,
|
4587
4627
|
username: String,
|
4588
4628
|
version: String? = nil,
|
@@ -4591,7 +4631,9 @@ public func jira(url: String,
|
|
4591
4631
|
teamId: Any? = nil,
|
4592
4632
|
teamName: String? = nil) -> Int
|
4593
4633
|
{
|
4594
|
-
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),
|
4595
4637
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
4596
4638
|
RubyCommand.Argument(name: "username", value: username),
|
4597
4639
|
RubyCommand.Argument(name: "version", value: version),
|
@@ -4706,7 +4748,9 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
4706
4748
|
- readonly: Only fetch existing certificates and profiles, don't generate new ones
|
4707
4749
|
- generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
|
4708
4750
|
- skipProvisioningProfiles: Skip syncing provisioning profiles
|
4709
|
-
- 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)
|
4710
4754
|
- username: Your Apple ID Username
|
4711
4755
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
4712
4756
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
@@ -4718,7 +4762,7 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
4718
4762
|
- shallowClone: Make a shallow clone of the repository (truncate the history to 1 revision)
|
4719
4763
|
- cloneBranchDirectly: Clone just the branch specified, instead of the whole repo. This requires that the branch already exists. Otherwise the command will fail
|
4720
4764
|
- gitBasicAuthorization: Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64
|
4721
|
-
- gitBearerAuthorization: Use a bearer authorization header to access the git repo (e.g.: access to an Azure
|
4765
|
+
- gitBearerAuthorization: Use a bearer authorization header to access the git repo (e.g.: access to an Azure DevOps repository), usually a string in Base64
|
4722
4766
|
- gitPrivateKey: Use a private key to access the git repo (e.g.: access to GitHub repository via Deploy keys), usually a id_rsa named file or the contents hereof
|
4723
4767
|
- googleCloudBucketName: Name of the Google Cloud Storage bucket to use
|
4724
4768
|
- googleCloudKeysFile: Path to the gc_keys.json file
|
@@ -4739,7 +4783,9 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
4739
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")
|
4740
4784
|
- profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
|
4741
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
|
4742
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
|
4743
4789
|
- verbose: Print out extra information and all commands
|
4744
4790
|
|
4745
4791
|
More information: https://docs.fastlane.tools/actions/match/
|
@@ -4750,7 +4796,9 @@ public func match(type: Any = matchfile.type,
|
|
4750
4796
|
generateAppleCerts: Bool = matchfile.generateAppleCerts,
|
4751
4797
|
skipProvisioningProfiles: Bool = matchfile.skipProvisioningProfiles,
|
4752
4798
|
appIdentifier: [String] = matchfile.appIdentifier,
|
4753
|
-
|
4799
|
+
apiKeyPath: Any? = matchfile.apiKeyPath,
|
4800
|
+
apiKey: [String: Any]? = matchfile.apiKey,
|
4801
|
+
username: Any? = matchfile.username,
|
4754
4802
|
teamId: Any? = matchfile.teamId,
|
4755
4803
|
teamName: Any? = matchfile.teamName,
|
4756
4804
|
storageMode: Any = matchfile.storageMode,
|
@@ -4782,7 +4830,9 @@ public func match(type: Any = matchfile.type,
|
|
4782
4830
|
templateName: Any? = matchfile.templateName,
|
4783
4831
|
profileName: Any? = matchfile.profileName,
|
4784
4832
|
failOnNameTaken: Bool = matchfile.failOnNameTaken,
|
4833
|
+
skipCertificateMatching: Bool = matchfile.skipCertificateMatching,
|
4785
4834
|
outputPath: Any? = matchfile.outputPath,
|
4835
|
+
skipSetPartitionList: Bool = matchfile.skipSetPartitionList,
|
4786
4836
|
verbose: Bool = matchfile.verbose)
|
4787
4837
|
{
|
4788
4838
|
let command = RubyCommand(commandID: "", methodName: "match", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
|
@@ -4791,6 +4841,8 @@ public func match(type: Any = matchfile.type,
|
|
4791
4841
|
RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
|
4792
4842
|
RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
|
4793
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),
|
4794
4846
|
RubyCommand.Argument(name: "username", value: username),
|
4795
4847
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
4796
4848
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
@@ -4823,7 +4875,9 @@ public func match(type: Any = matchfile.type,
|
|
4823
4875
|
RubyCommand.Argument(name: "template_name", value: templateName),
|
4824
4876
|
RubyCommand.Argument(name: "profile_name", value: profileName),
|
4825
4877
|
RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
|
4878
|
+
RubyCommand.Argument(name: "skip_certificate_matching", value: skipCertificateMatching),
|
4826
4879
|
RubyCommand.Argument(name: "output_path", value: outputPath),
|
4880
|
+
RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
|
4827
4881
|
RubyCommand.Argument(name: "verbose", value: verbose)])
|
4828
4882
|
_ = runner.executeCommand(command)
|
4829
4883
|
}
|
@@ -5736,7 +5790,10 @@ public func recreateSchemes(project: String) {
|
|
5736
5790
|
|
5737
5791
|
- parameters:
|
5738
5792
|
- name: Provide the name of the device to register as
|
5793
|
+
- platform: Provide the platform of the device to register as (ios, mac)
|
5739
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)
|
5740
5797
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
5741
5798
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
5742
5799
|
- username: Optional: Your Apple ID
|
@@ -5746,13 +5803,19 @@ public func recreateSchemes(project: String) {
|
|
5746
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.
|
5747
5804
|
*/
|
5748
5805
|
@discardableResult public func registerDevice(name: String,
|
5806
|
+
platform: String = "ios",
|
5749
5807
|
udid: String,
|
5808
|
+
apiKeyPath: String? = nil,
|
5809
|
+
apiKey: [String: Any]? = nil,
|
5750
5810
|
teamId: String? = nil,
|
5751
5811
|
teamName: String? = nil,
|
5752
|
-
username: String) -> String
|
5812
|
+
username: String? = nil) -> String
|
5753
5813
|
{
|
5754
5814
|
let command = RubyCommand(commandID: "", methodName: "register_device", className: nil, args: [RubyCommand.Argument(name: "name", value: name),
|
5815
|
+
RubyCommand.Argument(name: "platform", value: platform),
|
5755
5816
|
RubyCommand.Argument(name: "udid", value: udid),
|
5817
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
5818
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
5756
5819
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
5757
5820
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
5758
5821
|
RubyCommand.Argument(name: "username", value: username)])
|
@@ -5765,6 +5828,8 @@ public func recreateSchemes(project: String) {
|
|
5765
5828
|
- parameters:
|
5766
5829
|
- devices: A hash of devices, with the name as key and the UDID as value
|
5767
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)
|
5768
5833
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
5769
5834
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
5770
5835
|
- username: Optional: Your Apple ID
|
@@ -5776,6 +5841,8 @@ public func recreateSchemes(project: String) {
|
|
5776
5841
|
*/
|
5777
5842
|
public func registerDevices(devices: [String: Any]? = nil,
|
5778
5843
|
devicesFile: String? = nil,
|
5844
|
+
apiKeyPath: String? = nil,
|
5845
|
+
apiKey: [String: Any]? = nil,
|
5779
5846
|
teamId: String? = nil,
|
5780
5847
|
teamName: String? = nil,
|
5781
5848
|
username: String,
|
@@ -5783,6 +5850,8 @@ public func registerDevices(devices: [String: Any]? = nil,
|
|
5783
5850
|
{
|
5784
5851
|
let command = RubyCommand(commandID: "", methodName: "register_devices", className: nil, args: [RubyCommand.Argument(name: "devices", value: devices),
|
5785
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),
|
5786
5855
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
5787
5856
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
5788
5857
|
RubyCommand.Argument(name: "username", value: username),
|
@@ -6546,6 +6615,8 @@ public func setBuildNumberRepository(useHgRevisionNumber: Bool = false,
|
|
6546
6615
|
Set the changelog for all languages on App Store Connect
|
6547
6616
|
|
6548
6617
|
- parameters:
|
6618
|
+
- 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)
|
6619
|
+
- 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)
|
6549
6620
|
- appIdentifier: The bundle identifier of your app
|
6550
6621
|
- username: Your Apple ID Username
|
6551
6622
|
- version: The version number to create/update
|
@@ -6558,15 +6629,19 @@ public func setBuildNumberRepository(useHgRevisionNumber: Bool = false,
|
|
6558
6629
|
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.
|
6559
6630
|
Defining the version is optional. _fastlane_ will try to automatically detect it if you don't provide one.
|
6560
6631
|
*/
|
6561
|
-
public func setChangelog(
|
6562
|
-
|
6632
|
+
public func setChangelog(apiKeyPath: String? = nil,
|
6633
|
+
apiKey: [String: Any]? = nil,
|
6634
|
+
appIdentifier: String,
|
6635
|
+
username: String? = nil,
|
6563
6636
|
version: String? = nil,
|
6564
6637
|
changelog: String? = nil,
|
6565
6638
|
teamId: Any? = nil,
|
6566
6639
|
teamName: String? = nil,
|
6567
6640
|
platform: String = "ios")
|
6568
6641
|
{
|
6569
|
-
let command = RubyCommand(commandID: "", methodName: "set_changelog", className: nil, args: [RubyCommand.Argument(name: "
|
6642
|
+
let command = RubyCommand(commandID: "", methodName: "set_changelog", className: nil, args: [RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
6643
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
6644
|
+
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
6570
6645
|
RubyCommand.Argument(name: "username", value: username),
|
6571
6646
|
RubyCommand.Argument(name: "version", value: version),
|
6572
6647
|
RubyCommand.Argument(name: "changelog", value: changelog),
|
@@ -6808,6 +6883,8 @@ public func setupTravis(force: Bool = false) {
|
|
6808
6883
|
- skipInstall: By default, the certificate will be added to your local machine. Setting this flag will skip this action
|
6809
6884
|
- force: Renew provisioning profiles regardless of its state - to automatically add all devices for ad hoc profiles
|
6810
6885
|
- appIdentifier: The bundle identifier of your app
|
6886
|
+
- 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)
|
6887
|
+
- 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)
|
6811
6888
|
- username: Your Apple ID Username
|
6812
6889
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
6813
6890
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
@@ -6834,6 +6911,8 @@ public func sigh(adhoc: Bool = false,
|
|
6834
6911
|
skipInstall: Bool = false,
|
6835
6912
|
force: Bool = false,
|
6836
6913
|
appIdentifier: String,
|
6914
|
+
apiKeyPath: String? = nil,
|
6915
|
+
apiKey: [String: Any]? = nil,
|
6837
6916
|
username: String,
|
6838
6917
|
teamId: String? = nil,
|
6839
6918
|
teamName: String? = nil,
|
@@ -6856,6 +6935,8 @@ public func sigh(adhoc: Bool = false,
|
|
6856
6935
|
RubyCommand.Argument(name: "skip_install", value: skipInstall),
|
6857
6936
|
RubyCommand.Argument(name: "force", value: force),
|
6858
6937
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
6938
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
6939
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
6859
6940
|
RubyCommand.Argument(name: "username", value: username),
|
6860
6941
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
6861
6942
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
@@ -7597,7 +7678,9 @@ public func swiftlint(mode: Any = "lint",
|
|
7597
7678
|
- readonly: Only fetch existing certificates and profiles, don't generate new ones
|
7598
7679
|
- generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
|
7599
7680
|
- skipProvisioningProfiles: Skip syncing provisioning profiles
|
7600
|
-
- appIdentifier: The bundle identifier(s) of your app (comma-separated)
|
7681
|
+
- appIdentifier: The bundle identifier(s) of your app (comma-separated string or array of strings)
|
7682
|
+
- 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)
|
7683
|
+
- 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)
|
7601
7684
|
- username: Your Apple ID Username
|
7602
7685
|
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
7603
7686
|
- teamName: The name of your Developer Portal team if you're in multiple teams
|
@@ -7609,7 +7692,7 @@ public func swiftlint(mode: Any = "lint",
|
|
7609
7692
|
- shallowClone: Make a shallow clone of the repository (truncate the history to 1 revision)
|
7610
7693
|
- cloneBranchDirectly: Clone just the branch specified, instead of the whole repo. This requires that the branch already exists. Otherwise the command will fail
|
7611
7694
|
- gitBasicAuthorization: Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64
|
7612
|
-
- gitBearerAuthorization: Use a bearer authorization header to access the git repo (e.g.: access to an Azure
|
7695
|
+
- gitBearerAuthorization: Use a bearer authorization header to access the git repo (e.g.: access to an Azure DevOps repository), usually a string in Base64
|
7613
7696
|
- gitPrivateKey: Use a private key to access the git repo (e.g.: access to GitHub repository via Deploy keys), usually a id_rsa named file or the contents hereof
|
7614
7697
|
- googleCloudBucketName: Name of the Google Cloud Storage bucket to use
|
7615
7698
|
- googleCloudKeysFile: Path to the gc_keys.json file
|
@@ -7630,7 +7713,9 @@ public func swiftlint(mode: Any = "lint",
|
|
7630
7713
|
- 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")
|
7631
7714
|
- profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
|
7632
7715
|
- 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
|
7716
|
+
- 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
|
7633
7717
|
- outputPath: Path in which to export certificates, key and profile
|
7718
|
+
- 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
|
7634
7719
|
- verbose: Print out extra information and all commands
|
7635
7720
|
|
7636
7721
|
More information: https://docs.fastlane.tools/actions/match/
|
@@ -7641,7 +7726,9 @@ public func syncCodeSigning(type: String = "development",
|
|
7641
7726
|
generateAppleCerts: Bool = true,
|
7642
7727
|
skipProvisioningProfiles: Bool = false,
|
7643
7728
|
appIdentifier: [String],
|
7644
|
-
|
7729
|
+
apiKeyPath: String? = nil,
|
7730
|
+
apiKey: [String: Any]? = nil,
|
7731
|
+
username: String? = nil,
|
7645
7732
|
teamId: String? = nil,
|
7646
7733
|
teamName: String? = nil,
|
7647
7734
|
storageMode: String = "git",
|
@@ -7673,7 +7760,9 @@ public func syncCodeSigning(type: String = "development",
|
|
7673
7760
|
templateName: String? = nil,
|
7674
7761
|
profileName: String? = nil,
|
7675
7762
|
failOnNameTaken: Bool = false,
|
7763
|
+
skipCertificateMatching: Bool = false,
|
7676
7764
|
outputPath: String? = nil,
|
7765
|
+
skipSetPartitionList: Bool = false,
|
7677
7766
|
verbose: Bool = false)
|
7678
7767
|
{
|
7679
7768
|
let command = RubyCommand(commandID: "", methodName: "sync_code_signing", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
|
@@ -7682,6 +7771,8 @@ public func syncCodeSigning(type: String = "development",
|
|
7682
7771
|
RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
|
7683
7772
|
RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
|
7684
7773
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
7774
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
7775
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
7685
7776
|
RubyCommand.Argument(name: "username", value: username),
|
7686
7777
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
7687
7778
|
RubyCommand.Argument(name: "team_name", value: teamName),
|
@@ -7714,7 +7805,9 @@ public func syncCodeSigning(type: String = "development",
|
|
7714
7805
|
RubyCommand.Argument(name: "template_name", value: templateName),
|
7715
7806
|
RubyCommand.Argument(name: "profile_name", value: profileName),
|
7716
7807
|
RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
|
7808
|
+
RubyCommand.Argument(name: "skip_certificate_matching", value: skipCertificateMatching),
|
7717
7809
|
RubyCommand.Argument(name: "output_path", value: outputPath),
|
7810
|
+
RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
|
7718
7811
|
RubyCommand.Argument(name: "verbose", value: verbose)])
|
7719
7812
|
_ = runner.executeCommand(command)
|
7720
7813
|
}
|
@@ -8400,7 +8493,7 @@ public func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/a
|
|
8400
8493
|
- skipScreenshots: Don't upload the screenshots
|
8401
8494
|
- skipMetadata: Don't upload the metadata (e.g. title, description). This will still upload screenshots
|
8402
8495
|
- skipAppVersionUpdate: Don’t create or update the app version that is being prepared for submission
|
8403
|
-
- force: Skip
|
8496
|
+
- force: Skip verification of HTML preview file
|
8404
8497
|
- overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
|
8405
8498
|
- submitForReview: Submit the new version for Review after uploading everything
|
8406
8499
|
- rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
|
@@ -8448,7 +8541,7 @@ public func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/a
|
|
8448
8541
|
|
8449
8542
|
Using _upload_to_app_store_ after _build_app_ and _capture_screenshots_ will automatically upload the latest ipa and screenshots with no other configuration.
|
8450
8543
|
|
8451
|
-
If you don't want
|
8544
|
+
If you don't want to verify an HTML preview for App Store builds, use the `:force` option.
|
8452
8545
|
This is useful when running _fastlane_ on your Continuous Integration server:
|
8453
8546
|
`_upload_to_app_store_(force: true)`
|
8454
8547
|
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.
|
@@ -8474,7 +8567,7 @@ public func uploadToAppStore(apiKeyPath: String? = nil,
|
|
8474
8567
|
overwriteScreenshots: Bool = false,
|
8475
8568
|
submitForReview: Bool = false,
|
8476
8569
|
rejectIfPossible: Bool = false,
|
8477
|
-
automaticRelease: Bool =
|
8570
|
+
automaticRelease: Bool? = nil,
|
8478
8571
|
autoReleaseDate: Int? = nil,
|
8479
8572
|
phasedRelease: Bool = false,
|
8480
8573
|
resetRatings: Bool = false,
|
@@ -9160,7 +9253,7 @@ public func xcov(workspace: String? = nil,
|
|
9160
9253
|
coverallsServiceJobId: String? = nil,
|
9161
9254
|
coverallsRepoToken: String? = nil,
|
9162
9255
|
xcconfig: String? = nil,
|
9163
|
-
ideFoundationPath: String = "/Applications/Xcode-
|
9256
|
+
ideFoundationPath: String = "/Applications/Xcode-12.0.1.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
|
9164
9257
|
legacySupport: Bool = false)
|
9165
9258
|
{
|
9166
9259
|
let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
@@ -9306,4 +9399,4 @@ public let snapshotfile = Snapshotfile()
|
|
9306
9399
|
|
9307
9400
|
// Please don't remove the lines below
|
9308
9401
|
// They are used to detect outdated files
|
9309
|
-
// FastlaneRunnerAPIVersion [0.9.
|
9402
|
+
// FastlaneRunnerAPIVersion [0.9.101]
|