fastlane 2.219.0 → 2.220.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 +86 -86
- data/bin/console +11 -0
- data/bin/match_file +60 -0
- data/deliver/lib/deliver/download_screenshots.rb +2 -1
- data/deliver/lib/deliver/generate_summary.rb +1 -1
- data/deliver/lib/deliver/options.rb +14 -0
- data/deliver/lib/deliver/runner.rb +4 -4
- data/deliver/lib/deliver/upload_metadata.rb +43 -28
- data/deliver/lib/deliver/upload_screenshots.rb +15 -8
- data/fastlane/lib/fastlane/actions/appetize.rb +4 -0
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +6 -2
- data/fastlane/lib/fastlane/actions/git_add.rb +17 -2
- data/fastlane/lib/fastlane/actions/mailgun.rb +30 -8
- data/fastlane/lib/fastlane/actions/onesignal.rb +14 -2
- data/fastlane/lib/fastlane/actions/update_project_provisioning.rb +2 -1
- data/fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb +4 -2
- data/fastlane/lib/fastlane/commands_generator.rb +9 -0
- data/fastlane/lib/fastlane/console.rb +24 -0
- data/fastlane/lib/fastlane/helper/sh_helper.rb +1 -1
- data/fastlane/lib/fastlane/plugins/plugin_fetcher.rb +2 -1
- data/fastlane/lib/fastlane/plugins/plugin_info_collector.rb +2 -1
- data/fastlane/lib/fastlane/plugins/plugin_manager.rb +2 -1
- data/fastlane/lib/fastlane/version.rb +2 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +9 -1
- data/fastlane/swift/Fastlane.swift +41 -8
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +1 -1
- data/fastlane/swift/LaneFileProtocol.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +1 -1
- data/fastlane/swift/OptionalConfigValue.swift +2 -2
- 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 +3 -3
- data/fastlane/swift/formatting/Brewfile.lock.json +17 -17
- data/fastlane_core/lib/fastlane_core/cert_checker.rb +11 -8
- data/fastlane_core/lib/fastlane_core/device_manager.rb +1 -1
- data/fastlane_core/lib/fastlane_core/helper.rb +0 -15
- data/fastlane_core/lib/fastlane_core/print_table.rb +16 -0
- data/fastlane_core/lib/fastlane_core/project.rb +5 -0
- data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +0 -4
- data/fastlane_core/lib/fastlane_core/ui/help_formatter.rb +1 -5
- data/frameit/lib/frameit/device_types.rb +4 -0
- data/frameit/lib/frameit/editor.rb +20 -0
- data/gym/lib/gym/detect_values.rb +2 -0
- data/gym/lib/gym/module.rb +2 -2
- data/match/lib/assets/READMETemplate.md +3 -5
- data/match/lib/match/encryption/encryption.rb +154 -0
- data/match/lib/match/encryption/openssl.rb +7 -38
- data/match/lib/match/encryption.rb +1 -0
- data/match/lib/match/runner.rb +45 -6
- data/match/lib/match/storage/git_storage.rb +4 -3
- data/match/lib/match/storage/interface.rb +9 -5
- data/pilot/lib/pilot/build_manager.rb +5 -2
- data/pilot/lib/pilot/manager.rb +2 -2
- data/pilot/lib/pilot/options.rb +1 -1
- data/snapshot/lib/snapshot/options.rb +2 -2
- data/snapshot/lib/snapshot/setup.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/api_client.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/app_info.rb +17 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +44 -9
- data/spaceship/lib/spaceship/connect_api/models/beta_tester.rb +30 -2
- data/spaceship/lib/spaceship/connect_api/models/certificate.rb +2 -2
- data/spaceship/lib/spaceship/connect_api/models/device.rb +11 -6
- data/spaceship/lib/spaceship/connect_api/models/profile.rb +8 -1
- data/spaceship/lib/spaceship/connect_api/token.rb +2 -1
- data/spaceship/lib/spaceship/connect_api.rb +5 -2
- data/spaceship/lib/spaceship/portal/certificate.rb +2 -2
- data/spaceship/lib/spaceship/portal/provisioning_profile.rb +8 -1
- data/trainer/lib/trainer/xcresult.rb +6 -10
- metadata +46 -29
@@ -2,6 +2,7 @@
|
|
2
2
|
// Copyright (c) 2024 FastlaneTools
|
3
3
|
|
4
4
|
import Foundation
|
5
|
+
|
5
6
|
/**
|
6
7
|
Run ADB Actions
|
7
8
|
|
@@ -661,10 +662,12 @@ public func appledoc(input: [String],
|
|
661
662
|
- skipAppVersionUpdate: Don’t create or update the app version that is being prepared for submission
|
662
663
|
- force: Skip verification of HTML preview file
|
663
664
|
- overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
|
665
|
+
- screenshotProcessingTimeout: Timeout in seconds to wait before considering screenshot processing as failed, used to handle cases where uploads to the App Store are stuck in processing
|
664
666
|
- syncScreenshots: Sync screenshots with local ones. This is currently beta option so set true to 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS' environment variable as well
|
665
667
|
- submitForReview: Submit the new version for Review after uploading everything
|
666
668
|
- verifyOnly: Verifies archive with App Store Connect without uploading
|
667
669
|
- rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
|
670
|
+
- versionCheckWaitRetryLimit: After submitting a new version, App Store Connect takes some time to recognize the new version and we must wait until it's available before attempting to upload metadata for it. There is a mechanism that will check if it's available and retry with an exponential backoff if it's not available yet. This option specifies how many times we should retry before giving up. Setting this to a value below 5 is not recommended and will likely cause failures. Increase this parameter when Apple servers seem to be degraded or slow
|
668
671
|
- automaticRelease: Should the app be automatically released once it's approved? (Cannot be used together with `auto_release_date`)
|
669
672
|
- autoReleaseDate: Date in milliseconds for automatically releasing on pending approval (Cannot be used together with `automatic_release`)
|
670
673
|
- phasedRelease: Enable the phased release feature of iTC
|
@@ -733,10 +736,12 @@ public func appstore(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault
|
|
733
736
|
skipAppVersionUpdate: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
734
737
|
force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
735
738
|
overwriteScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
739
|
+
screenshotProcessingTimeout: Int = 3600,
|
736
740
|
syncScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
737
741
|
submitForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
738
742
|
verifyOnly: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
739
743
|
rejectIfPossible: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
744
|
+
versionCheckWaitRetryLimit: Int = 7,
|
740
745
|
automaticRelease: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
|
741
746
|
autoReleaseDate: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
|
742
747
|
phasedRelease: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
@@ -798,10 +803,12 @@ public func appstore(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault
|
|
798
803
|
let skipAppVersionUpdateArg = skipAppVersionUpdate.asRubyArgument(name: "skip_app_version_update", type: nil)
|
799
804
|
let forceArg = force.asRubyArgument(name: "force", type: nil)
|
800
805
|
let overwriteScreenshotsArg = overwriteScreenshots.asRubyArgument(name: "overwrite_screenshots", type: nil)
|
806
|
+
let screenshotProcessingTimeoutArg = RubyCommand.Argument(name: "screenshot_processing_timeout", value: screenshotProcessingTimeout, type: nil)
|
801
807
|
let syncScreenshotsArg = syncScreenshots.asRubyArgument(name: "sync_screenshots", type: nil)
|
802
808
|
let submitForReviewArg = submitForReview.asRubyArgument(name: "submit_for_review", type: nil)
|
803
809
|
let verifyOnlyArg = verifyOnly.asRubyArgument(name: "verify_only", type: nil)
|
804
810
|
let rejectIfPossibleArg = rejectIfPossible.asRubyArgument(name: "reject_if_possible", type: nil)
|
811
|
+
let versionCheckWaitRetryLimitArg = RubyCommand.Argument(name: "version_check_wait_retry_limit", value: versionCheckWaitRetryLimit, type: nil)
|
805
812
|
let automaticReleaseArg = automaticRelease.asRubyArgument(name: "automatic_release", type: nil)
|
806
813
|
let autoReleaseDateArg = autoReleaseDate.asRubyArgument(name: "auto_release_date", type: nil)
|
807
814
|
let phasedReleaseArg = phasedRelease.asRubyArgument(name: "phased_release", type: nil)
|
@@ -862,10 +869,12 @@ public func appstore(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault
|
|
862
869
|
skipAppVersionUpdateArg,
|
863
870
|
forceArg,
|
864
871
|
overwriteScreenshotsArg,
|
872
|
+
screenshotProcessingTimeoutArg,
|
865
873
|
syncScreenshotsArg,
|
866
874
|
submitForReviewArg,
|
867
875
|
verifyOnlyArg,
|
868
876
|
rejectIfPossibleArg,
|
877
|
+
versionCheckWaitRetryLimitArg,
|
869
878
|
automaticReleaseArg,
|
870
879
|
autoReleaseDateArg,
|
871
880
|
phasedReleaseArg,
|
@@ -2108,8 +2117,8 @@ public func captureAndroidScreenshots(androidHome: OptionalConfigValue<String?>
|
|
2108
2117
|
Generate new localized screenshots on multiple devices (via _snapshot_)
|
2109
2118
|
|
2110
2119
|
- parameters:
|
2111
|
-
- workspace: Path the workspace file
|
2112
|
-
- project: Path the project file
|
2120
|
+
- workspace: Path to the workspace file
|
2121
|
+
- project: Path to the project file
|
2113
2122
|
- xcargs: Pass additional arguments to xcodebuild for the test phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
|
2114
2123
|
- xcconfig: Use an extra XCCONFIG file to build your app
|
2115
2124
|
- devices: A list of devices you want to take the screenshots from
|
@@ -2317,8 +2326,8 @@ public func captureIosScreenshots(workspace: OptionalConfigValue<String?> = .fas
|
|
2317
2326
|
Alias for the `capture_ios_screenshots` action
|
2318
2327
|
|
2319
2328
|
- parameters:
|
2320
|
-
- workspace: Path the workspace file
|
2321
|
-
- project: Path the project file
|
2329
|
+
- workspace: Path to the workspace file
|
2330
|
+
- project: Path to the project file
|
2322
2331
|
- xcargs: Pass additional arguments to xcodebuild for the test phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
|
2323
2332
|
- xcconfig: Use an extra XCCONFIG file to build your app
|
2324
2333
|
- devices: A list of devices you want to take the screenshots from
|
@@ -3693,10 +3702,12 @@ public func deleteKeychain(name: OptionalConfigValue<String?> = .fastlaneDefault
|
|
3693
3702
|
- skipAppVersionUpdate: Don’t create or update the app version that is being prepared for submission
|
3694
3703
|
- force: Skip verification of HTML preview file
|
3695
3704
|
- overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
|
3705
|
+
- screenshotProcessingTimeout: Timeout in seconds to wait before considering screenshot processing as failed, used to handle cases where uploads to the App Store are stuck in processing
|
3696
3706
|
- syncScreenshots: Sync screenshots with local ones. This is currently beta option so set true to 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS' environment variable as well
|
3697
3707
|
- submitForReview: Submit the new version for Review after uploading everything
|
3698
3708
|
- verifyOnly: Verifies archive with App Store Connect without uploading
|
3699
3709
|
- rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
|
3710
|
+
- versionCheckWaitRetryLimit: After submitting a new version, App Store Connect takes some time to recognize the new version and we must wait until it's available before attempting to upload metadata for it. There is a mechanism that will check if it's available and retry with an exponential backoff if it's not available yet. This option specifies how many times we should retry before giving up. Setting this to a value below 5 is not recommended and will likely cause failures. Increase this parameter when Apple servers seem to be degraded or slow
|
3700
3711
|
- automaticRelease: Should the app be automatically released once it's approved? (Cannot be used together with `auto_release_date`)
|
3701
3712
|
- autoReleaseDate: Date in milliseconds for automatically releasing on pending approval (Cannot be used together with `automatic_release`)
|
3702
3713
|
- phasedRelease: Enable the phased release feature of iTC
|
@@ -3765,10 +3776,12 @@ public func deliver(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(
|
|
3765
3776
|
skipAppVersionUpdate: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.skipAppVersionUpdate),
|
3766
3777
|
force: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.force),
|
3767
3778
|
overwriteScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.overwriteScreenshots),
|
3779
|
+
screenshotProcessingTimeout: Int = deliverfile.screenshotProcessingTimeout,
|
3768
3780
|
syncScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.syncScreenshots),
|
3769
3781
|
submitForReview: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.submitForReview),
|
3770
3782
|
verifyOnly: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.verifyOnly),
|
3771
3783
|
rejectIfPossible: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.rejectIfPossible),
|
3784
|
+
versionCheckWaitRetryLimit: Int = deliverfile.versionCheckWaitRetryLimit,
|
3772
3785
|
automaticRelease: OptionalConfigValue<Bool?> = .fastlaneDefault(deliverfile.automaticRelease),
|
3773
3786
|
autoReleaseDate: OptionalConfigValue<Int?> = .fastlaneDefault(deliverfile.autoReleaseDate),
|
3774
3787
|
phasedRelease: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.phasedRelease),
|
@@ -3830,10 +3843,12 @@ public func deliver(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(
|
|
3830
3843
|
let skipAppVersionUpdateArg = skipAppVersionUpdate.asRubyArgument(name: "skip_app_version_update", type: nil)
|
3831
3844
|
let forceArg = force.asRubyArgument(name: "force", type: nil)
|
3832
3845
|
let overwriteScreenshotsArg = overwriteScreenshots.asRubyArgument(name: "overwrite_screenshots", type: nil)
|
3846
|
+
let screenshotProcessingTimeoutArg = RubyCommand.Argument(name: "screenshot_processing_timeout", value: screenshotProcessingTimeout, type: nil)
|
3833
3847
|
let syncScreenshotsArg = syncScreenshots.asRubyArgument(name: "sync_screenshots", type: nil)
|
3834
3848
|
let submitForReviewArg = submitForReview.asRubyArgument(name: "submit_for_review", type: nil)
|
3835
3849
|
let verifyOnlyArg = verifyOnly.asRubyArgument(name: "verify_only", type: nil)
|
3836
3850
|
let rejectIfPossibleArg = rejectIfPossible.asRubyArgument(name: "reject_if_possible", type: nil)
|
3851
|
+
let versionCheckWaitRetryLimitArg = RubyCommand.Argument(name: "version_check_wait_retry_limit", value: versionCheckWaitRetryLimit, type: nil)
|
3837
3852
|
let automaticReleaseArg = automaticRelease.asRubyArgument(name: "automatic_release", type: nil)
|
3838
3853
|
let autoReleaseDateArg = autoReleaseDate.asRubyArgument(name: "auto_release_date", type: nil)
|
3839
3854
|
let phasedReleaseArg = phasedRelease.asRubyArgument(name: "phased_release", type: nil)
|
@@ -3894,10 +3909,12 @@ public func deliver(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(
|
|
3894
3909
|
skipAppVersionUpdateArg,
|
3895
3910
|
forceArg,
|
3896
3911
|
overwriteScreenshotsArg,
|
3912
|
+
screenshotProcessingTimeoutArg,
|
3897
3913
|
syncScreenshotsArg,
|
3898
3914
|
submitForReviewArg,
|
3899
3915
|
verifyOnlyArg,
|
3900
3916
|
rejectIfPossibleArg,
|
3917
|
+
versionCheckWaitRetryLimitArg,
|
3901
3918
|
automaticReleaseArg,
|
3902
3919
|
autoReleaseDateArg,
|
3903
3920
|
phasedReleaseArg,
|
@@ -5246,17 +5263,21 @@ public func getPushCertificate(platform: String = "ios",
|
|
5246
5263
|
- parameters:
|
5247
5264
|
- path: The file(s) and path(s) you want to add
|
5248
5265
|
- shellEscape: Shell escapes paths (set to false if using wildcards or manually escaping spaces in :path)
|
5266
|
+
- force: Allow adding otherwise ignored files
|
5249
5267
|
- pathspec: **DEPRECATED!** Use `--path` instead - The pathspec you want to add files from
|
5250
5268
|
*/
|
5251
5269
|
public func gitAdd(path: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
|
5252
5270
|
shellEscape: OptionalConfigValue<Bool> = .fastlaneDefault(true),
|
5271
|
+
force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
5253
5272
|
pathspec: OptionalConfigValue<String?> = .fastlaneDefault(nil))
|
5254
5273
|
{
|
5255
5274
|
let pathArg = path.asRubyArgument(name: "path", type: nil)
|
5256
5275
|
let shellEscapeArg = shellEscape.asRubyArgument(name: "shell_escape", type: nil)
|
5276
|
+
let forceArg = force.asRubyArgument(name: "force", type: nil)
|
5257
5277
|
let pathspecArg = pathspec.asRubyArgument(name: "pathspec", type: nil)
|
5258
5278
|
let array: [RubyCommand.Argument?] = [pathArg,
|
5259
5279
|
shellEscapeArg,
|
5280
|
+
forceArg,
|
5260
5281
|
pathspecArg]
|
5261
5282
|
let args: [RubyCommand.Argument] = array
|
5262
5283
|
.filter { $0?.value != nil }
|
@@ -7552,6 +7573,7 @@ public func oclint(oclintPath: String = "oclint",
|
|
7552
7573
|
- appName: OneSignal App Name. This is required when creating an app (in other words, when `:app_id` is not set, and optional when updating an app
|
7553
7574
|
- androidToken: ANDROID GCM KEY
|
7554
7575
|
- androidGcmSenderId: GCM SENDER ID
|
7576
|
+
- fcmJson: FCM Service Account JSON File (in .json format)
|
7555
7577
|
- apnsP12: APNS P12 File (in .p12 format)
|
7556
7578
|
- apnsP12Password: APNS P12 password
|
7557
7579
|
- apnsEnv: APNS environment
|
@@ -7564,6 +7586,7 @@ public func onesignal(appId: OptionalConfigValue<String?> = .fastlaneDefault(nil
|
|
7564
7586
|
appName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
7565
7587
|
androidToken: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
7566
7588
|
androidGcmSenderId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
7589
|
+
fcmJson: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
7567
7590
|
apnsP12: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
7568
7591
|
apnsP12Password: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
7569
7592
|
apnsEnv: String = "production",
|
@@ -7574,6 +7597,7 @@ public func onesignal(appId: OptionalConfigValue<String?> = .fastlaneDefault(nil
|
|
7574
7597
|
let appNameArg = appName.asRubyArgument(name: "app_name", type: nil)
|
7575
7598
|
let androidTokenArg = androidToken.asRubyArgument(name: "android_token", type: nil)
|
7576
7599
|
let androidGcmSenderIdArg = androidGcmSenderId.asRubyArgument(name: "android_gcm_sender_id", type: nil)
|
7600
|
+
let fcmJsonArg = fcmJson.asRubyArgument(name: "fcm_json", type: nil)
|
7577
7601
|
let apnsP12Arg = apnsP12.asRubyArgument(name: "apns_p12", type: nil)
|
7578
7602
|
let apnsP12PasswordArg = apnsP12Password.asRubyArgument(name: "apns_p12_password", type: nil)
|
7579
7603
|
let apnsEnvArg = RubyCommand.Argument(name: "apns_env", value: apnsEnv, type: nil)
|
@@ -7583,6 +7607,7 @@ public func onesignal(appId: OptionalConfigValue<String?> = .fastlaneDefault(nil
|
|
7583
7607
|
appNameArg,
|
7584
7608
|
androidTokenArg,
|
7585
7609
|
androidGcmSenderIdArg,
|
7610
|
+
fcmJsonArg,
|
7586
7611
|
apnsP12Arg,
|
7587
7612
|
apnsP12PasswordArg,
|
7588
7613
|
apnsEnvArg,
|
@@ -10438,8 +10463,8 @@ public func slather(buildDirectory: OptionalConfigValue<String?> = .fastlaneDefa
|
|
10438
10463
|
Alias for the `capture_ios_screenshots` action
|
10439
10464
|
|
10440
10465
|
- parameters:
|
10441
|
-
- workspace: Path the workspace file
|
10442
|
-
- project: Path the project file
|
10466
|
+
- workspace: Path to the workspace file
|
10467
|
+
- project: Path to the project file
|
10443
10468
|
- xcargs: Pass additional arguments to xcodebuild for the test phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
|
10444
10469
|
- xcconfig: Use an extra XCCONFIG file to build your app
|
10445
10470
|
- devices: A list of devices you want to take the screenshots from
|
@@ -12499,10 +12524,12 @@ public func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/a
|
|
12499
12524
|
- skipAppVersionUpdate: Don’t create or update the app version that is being prepared for submission
|
12500
12525
|
- force: Skip verification of HTML preview file
|
12501
12526
|
- overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
|
12527
|
+
- screenshotProcessingTimeout: Timeout in seconds to wait before considering screenshot processing as failed, used to handle cases where uploads to the App Store are stuck in processing
|
12502
12528
|
- syncScreenshots: Sync screenshots with local ones. This is currently beta option so set true to 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS' environment variable as well
|
12503
12529
|
- submitForReview: Submit the new version for Review after uploading everything
|
12504
12530
|
- verifyOnly: Verifies archive with App Store Connect without uploading
|
12505
12531
|
- rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
|
12532
|
+
- versionCheckWaitRetryLimit: After submitting a new version, App Store Connect takes some time to recognize the new version and we must wait until it's available before attempting to upload metadata for it. There is a mechanism that will check if it's available and retry with an exponential backoff if it's not available yet. This option specifies how many times we should retry before giving up. Setting this to a value below 5 is not recommended and will likely cause failures. Increase this parameter when Apple servers seem to be degraded or slow
|
12506
12533
|
- automaticRelease: Should the app be automatically released once it's approved? (Cannot be used together with `auto_release_date`)
|
12507
12534
|
- autoReleaseDate: Date in milliseconds for automatically releasing on pending approval (Cannot be used together with `automatic_release`)
|
12508
12535
|
- phasedRelease: Enable the phased release feature of iTC
|
@@ -12571,10 +12598,12 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
|
|
12571
12598
|
skipAppVersionUpdate: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
12572
12599
|
force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
12573
12600
|
overwriteScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
12601
|
+
screenshotProcessingTimeout: Int = 3600,
|
12574
12602
|
syncScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
12575
12603
|
submitForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
12576
12604
|
verifyOnly: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
12577
12605
|
rejectIfPossible: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
12606
|
+
versionCheckWaitRetryLimit: Int = 7,
|
12578
12607
|
automaticRelease: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
|
12579
12608
|
autoReleaseDate: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
|
12580
12609
|
phasedRelease: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
@@ -12636,10 +12665,12 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
|
|
12636
12665
|
let skipAppVersionUpdateArg = skipAppVersionUpdate.asRubyArgument(name: "skip_app_version_update", type: nil)
|
12637
12666
|
let forceArg = force.asRubyArgument(name: "force", type: nil)
|
12638
12667
|
let overwriteScreenshotsArg = overwriteScreenshots.asRubyArgument(name: "overwrite_screenshots", type: nil)
|
12668
|
+
let screenshotProcessingTimeoutArg = RubyCommand.Argument(name: "screenshot_processing_timeout", value: screenshotProcessingTimeout, type: nil)
|
12639
12669
|
let syncScreenshotsArg = syncScreenshots.asRubyArgument(name: "sync_screenshots", type: nil)
|
12640
12670
|
let submitForReviewArg = submitForReview.asRubyArgument(name: "submit_for_review", type: nil)
|
12641
12671
|
let verifyOnlyArg = verifyOnly.asRubyArgument(name: "verify_only", type: nil)
|
12642
12672
|
let rejectIfPossibleArg = rejectIfPossible.asRubyArgument(name: "reject_if_possible", type: nil)
|
12673
|
+
let versionCheckWaitRetryLimitArg = RubyCommand.Argument(name: "version_check_wait_retry_limit", value: versionCheckWaitRetryLimit, type: nil)
|
12643
12674
|
let automaticReleaseArg = automaticRelease.asRubyArgument(name: "automatic_release", type: nil)
|
12644
12675
|
let autoReleaseDateArg = autoReleaseDate.asRubyArgument(name: "auto_release_date", type: nil)
|
12645
12676
|
let phasedReleaseArg = phasedRelease.asRubyArgument(name: "phased_release", type: nil)
|
@@ -12700,10 +12731,12 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
|
|
12700
12731
|
skipAppVersionUpdateArg,
|
12701
12732
|
forceArg,
|
12702
12733
|
overwriteScreenshotsArg,
|
12734
|
+
screenshotProcessingTimeoutArg,
|
12703
12735
|
syncScreenshotsArg,
|
12704
12736
|
submitForReviewArg,
|
12705
12737
|
verifyOnlyArg,
|
12706
12738
|
rejectIfPossibleArg,
|
12739
|
+
versionCheckWaitRetryLimitArg,
|
12707
12740
|
automaticReleaseArg,
|
12708
12741
|
autoReleaseDateArg,
|
12709
12742
|
phasedReleaseArg,
|
@@ -13561,7 +13594,7 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
|
|
13561
13594
|
coverallsServiceJobId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
13562
13595
|
coverallsRepoToken: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
13563
13596
|
xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
13564
|
-
ideFoundationPath: String = "/Applications/Xcode-15.
|
13597
|
+
ideFoundationPath: String = "/Applications/Xcode-15.3.0.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
|
13565
13598
|
legacySupport: OptionalConfigValue<Bool> = .fastlaneDefault(false))
|
13566
13599
|
{
|
13567
13600
|
let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
|
@@ -13764,4 +13797,4 @@ public let snapshotfile: Snapshotfile = .init()
|
|
13764
13797
|
|
13765
13798
|
// Please don't remove the lines below
|
13766
13799
|
// They are used to detect outdated files
|
13767
|
-
// FastlaneRunnerAPIVersion [0.9.
|
13800
|
+
// FastlaneRunnerAPIVersion [0.9.177]
|
@@ -68,7 +68,7 @@ open class LaneFile: NSObject, LaneFileProtocol {
|
|
68
68
|
|
69
69
|
public static var lanes: [String: String] {
|
70
70
|
var laneToMethodName: [String: String] = [:]
|
71
|
-
|
71
|
+
for name in laneFunctionNames {
|
72
72
|
let lowercasedName = name.lowercased()
|
73
73
|
if lowercasedName.hasSuffix("lane") {
|
74
74
|
laneToMethodName[lowercasedName] = name
|
@@ -93,8 +93,8 @@ extension OptionalConfigValue: ExpressibleByDictionaryLiteral where T == [String
|
|
93
93
|
|
94
94
|
public init(dictionaryLiteral elements: (Key, Value)...) {
|
95
95
|
var dict: [Key: Value] = [:]
|
96
|
-
elements
|
97
|
-
dict[
|
96
|
+
for element in elements {
|
97
|
+
dict[element.0] = element.1
|
98
98
|
}
|
99
99
|
self = .userDefined(dict)
|
100
100
|
}
|
@@ -2,10 +2,10 @@
|
|
2
2
|
// Copyright (c) 2024 FastlaneTools
|
3
3
|
|
4
4
|
public protocol SnapshotfileProtocol: AnyObject {
|
5
|
-
/// Path the workspace file
|
5
|
+
/// Path to the workspace file
|
6
6
|
var workspace: String? { get }
|
7
7
|
|
8
|
-
/// Path the project file
|
8
|
+
/// Path to the project file
|
9
9
|
var project: String? { get }
|
10
10
|
|
11
11
|
/// Pass additional arguments to xcodebuild for the test phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
|
@@ -204,4 +204,4 @@ public extension SnapshotfileProtocol {
|
|
204
204
|
|
205
205
|
// Please don't remove the lines below
|
206
206
|
// They are used to detect outdated files
|
207
|
-
// FastlaneRunnerAPIVersion [0.9.
|
207
|
+
// FastlaneRunnerAPIVersion [0.9.116]
|
@@ -2,45 +2,45 @@
|
|
2
2
|
"entries": {
|
3
3
|
"brew": {
|
4
4
|
"swiftformat": {
|
5
|
-
"version": "0.
|
5
|
+
"version": "0.53.5",
|
6
6
|
"bottle": {
|
7
7
|
"rebuild": 0,
|
8
8
|
"root_url": "https://ghcr.io/v2/homebrew/core",
|
9
9
|
"files": {
|
10
10
|
"arm64_sonoma": {
|
11
11
|
"cellar": ":any_skip_relocation",
|
12
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
13
|
-
"sha256": "
|
12
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:04e089d4b1ae1217dd6c8133b3c661add56d7c4f4f24ee67becd3cf8f54e6e80",
|
13
|
+
"sha256": "04e089d4b1ae1217dd6c8133b3c661add56d7c4f4f24ee67becd3cf8f54e6e80"
|
14
14
|
},
|
15
15
|
"arm64_ventura": {
|
16
16
|
"cellar": ":any_skip_relocation",
|
17
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
18
|
-
"sha256": "
|
17
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:19a6ce102e7df1cdee150dee619025aa3b2a4980070bee4f8cdd6976c0936d46",
|
18
|
+
"sha256": "19a6ce102e7df1cdee150dee619025aa3b2a4980070bee4f8cdd6976c0936d46"
|
19
19
|
},
|
20
20
|
"arm64_monterey": {
|
21
21
|
"cellar": ":any_skip_relocation",
|
22
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
23
|
-
"sha256": "
|
22
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:745ba037da0e1fe62f2f22faa45a17655b89d8870bacd9db32597ce1fd779509",
|
23
|
+
"sha256": "745ba037da0e1fe62f2f22faa45a17655b89d8870bacd9db32597ce1fd779509"
|
24
24
|
},
|
25
25
|
"sonoma": {
|
26
26
|
"cellar": ":any_skip_relocation",
|
27
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
28
|
-
"sha256": "
|
27
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:6830f0bd5d06dca19d2bcd614e6d0c87e7a3d703d33bce90d0448a83310dddcc",
|
28
|
+
"sha256": "6830f0bd5d06dca19d2bcd614e6d0c87e7a3d703d33bce90d0448a83310dddcc"
|
29
29
|
},
|
30
30
|
"ventura": {
|
31
31
|
"cellar": ":any_skip_relocation",
|
32
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
33
|
-
"sha256": "
|
32
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:dacbfeca6cbe99fc73448f08c0289f135e807bc220ac1dcb61952410f1b43535",
|
33
|
+
"sha256": "dacbfeca6cbe99fc73448f08c0289f135e807bc220ac1dcb61952410f1b43535"
|
34
34
|
},
|
35
35
|
"monterey": {
|
36
36
|
"cellar": ":any_skip_relocation",
|
37
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
38
|
-
"sha256": "
|
37
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:a5e30f5378aca201ca8bc7a350ebac28b3202366be1b37cf254f77c27761753a",
|
38
|
+
"sha256": "a5e30f5378aca201ca8bc7a350ebac28b3202366be1b37cf254f77c27761753a"
|
39
39
|
},
|
40
40
|
"x86_64_linux": {
|
41
41
|
"cellar": "/home/linuxbrew/.linuxbrew/Cellar",
|
42
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
43
|
-
"sha256": "
|
42
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:909ae79dbe735c9377355e202d07a58aeff1af1707ba7a3c843cf7c3b10f68a9",
|
43
|
+
"sha256": "909ae79dbe735c9377355e202d07a58aeff1af1707ba7a3c843cf7c3b10f68a9"
|
44
44
|
}
|
45
45
|
}
|
46
46
|
}
|
@@ -82,11 +82,11 @@
|
|
82
82
|
"macOS": "13.6"
|
83
83
|
},
|
84
84
|
"sonoma": {
|
85
|
-
"HOMEBREW_VERSION": "4.2.
|
85
|
+
"HOMEBREW_VERSION": "4.2.16-71-g044e48b",
|
86
86
|
"HOMEBREW_PREFIX": "/opt/homebrew",
|
87
87
|
"Homebrew/homebrew-core": "api",
|
88
88
|
"CLT": "15.0.0.0.1.1694021235",
|
89
|
-
"Xcode": "15.
|
89
|
+
"Xcode": "15.3",
|
90
90
|
"macOS": "14.2.1"
|
91
91
|
}
|
92
92
|
}
|
@@ -39,6 +39,7 @@ module FastlaneCore
|
|
39
39
|
def self.installed?(path, in_keychain: nil)
|
40
40
|
UI.user_error!("Could not find file '#{path}'") unless File.exist?(path)
|
41
41
|
|
42
|
+
in_keychain &&= FastlaneCore::Helper.keychain_path(in_keychain)
|
42
43
|
ids = installed_identities(in_keychain: in_keychain)
|
43
44
|
ids += installed_installers(in_keychain: in_keychain)
|
44
45
|
finger_print = sha1_fingerprint(path)
|
@@ -52,7 +53,7 @@ module FastlaneCore
|
|
52
53
|
end
|
53
54
|
|
54
55
|
def self.installed_identities(in_keychain: nil)
|
55
|
-
install_missing_wwdr_certificates
|
56
|
+
install_missing_wwdr_certificates(in_keychain: in_keychain)
|
56
57
|
|
57
58
|
available = list_available_identities(in_keychain: in_keychain)
|
58
59
|
# Match for this text against word boundaries to avoid edge cases around multiples of 10 identities!
|
@@ -111,12 +112,13 @@ module FastlaneCore
|
|
111
112
|
`#{commands.join(' ')}`
|
112
113
|
end
|
113
114
|
|
114
|
-
def self.installed_wwdr_certificates
|
115
|
+
def self.installed_wwdr_certificates(keychain: nil)
|
115
116
|
certificate_name = "Apple Worldwide Developer Relations"
|
117
|
+
keychain ||= wwdr_keychain # backwards compatibility
|
116
118
|
|
117
119
|
# Find all installed WWDRCA certificates
|
118
120
|
installed_certs = []
|
119
|
-
Helper.backticks("security find-certificate -a -c '#{certificate_name}' -p #{
|
121
|
+
Helper.backticks("security find-certificate -a -c '#{certificate_name}' -p #{keychain.shellescape}", print: false)
|
120
122
|
.lines
|
121
123
|
.each do |line|
|
122
124
|
if line.start_with?('-----BEGIN CERTIFICATE-----')
|
@@ -135,20 +137,21 @@ module FastlaneCore
|
|
135
137
|
.compact
|
136
138
|
end
|
137
139
|
|
138
|
-
def self.install_missing_wwdr_certificates
|
140
|
+
def self.install_missing_wwdr_certificates(in_keychain: nil)
|
139
141
|
# Install all Worldwide Developer Relations Intermediate Certificates listed here: https://www.apple.com/certificateauthority/
|
140
|
-
|
142
|
+
keychain = in_keychain || wwdr_keychain
|
143
|
+
missing = WWDRCA_CERTIFICATES.map { |c| c[:alias] } - installed_wwdr_certificates(keychain: keychain)
|
141
144
|
missing.each do |cert_alias|
|
142
|
-
install_wwdr_certificate(cert_alias)
|
145
|
+
install_wwdr_certificate(cert_alias, keychain: keychain)
|
143
146
|
end
|
144
147
|
missing.count
|
145
148
|
end
|
146
149
|
|
147
|
-
def self.install_wwdr_certificate(cert_alias)
|
150
|
+
def self.install_wwdr_certificate(cert_alias, keychain: nil)
|
148
151
|
url = WWDRCA_CERTIFICATES.find { |c| c[:alias] == cert_alias }.fetch(:url)
|
149
152
|
file = Tempfile.new([File.basename(url, ".cer"), ".cer"])
|
150
153
|
filename = file.path
|
151
|
-
keychain
|
154
|
+
keychain ||= wwdr_keychain # backwards compatibility
|
152
155
|
keychain = "-k #{keychain.shellescape}" unless keychain.empty?
|
153
156
|
|
154
157
|
# Attempts to fix an issue installing WWDR cert tends to fail on CIs
|
@@ -13,7 +13,7 @@ module FastlaneCore
|
|
13
13
|
|
14
14
|
def runtime_build_os_versions
|
15
15
|
@runtime_build_os_versions ||= begin
|
16
|
-
output, status = Open3.capture2('xcrun simctl list
|
16
|
+
output, status = Open3.capture2('xcrun simctl list -j runtimes')
|
17
17
|
raise status unless status.success?
|
18
18
|
json = JSON.parse(output)
|
19
19
|
json['runtimes'].map { |h| [h['buildversion'], h['version']] }.to_h
|
@@ -482,20 +482,5 @@ module FastlaneCore
|
|
482
482
|
UI.error("Your entries do not match. Please try again")
|
483
483
|
end
|
484
484
|
end
|
485
|
-
|
486
|
-
# URI.open added by `require 'open-uri'` is not available in Ruby 2.4. This helper lets you open a URI
|
487
|
-
# by choosing appropriate interface to do so depending on Ruby version. This helper is subject to be removed
|
488
|
-
# when fastlane drops Ruby 2.4 support.
|
489
|
-
def self.open_uri(*rest, &block)
|
490
|
-
require 'open-uri'
|
491
|
-
|
492
|
-
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.5')
|
493
|
-
dup = rest.dup
|
494
|
-
uri = dup.shift
|
495
|
-
URI.parse(uri).open(*dup, &block)
|
496
|
-
else
|
497
|
-
URI.open(*rest, &block)
|
498
|
-
end
|
499
|
-
end
|
500
485
|
end
|
501
486
|
end
|
@@ -1,6 +1,22 @@
|
|
1
1
|
require_relative 'configuration/configuration'
|
2
2
|
require_relative 'helper'
|
3
3
|
|
4
|
+
# Monkey patch Terminal::Table until this is merged
|
5
|
+
# https://github.com/tj/terminal-table/pull/131
|
6
|
+
# solves https://github.com/fastlane/fastlane/issues/21852
|
7
|
+
# loads Terminal::Table first to be able to monkey patch it.
|
8
|
+
require 'terminal-table'
|
9
|
+
module Terminal
|
10
|
+
class Table
|
11
|
+
class Cell
|
12
|
+
def lines
|
13
|
+
# @value.to_s.split(/\n/)
|
14
|
+
@value.to_s.encode("utf-8", invalid: :replace).split(/\n/)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
4
20
|
module FastlaneCore
|
5
21
|
class PrintTable
|
6
22
|
class << self
|
@@ -307,6 +307,10 @@ module FastlaneCore
|
|
307
307
|
supported_platforms.include?(:watchOS)
|
308
308
|
end
|
309
309
|
|
310
|
+
def visionos?
|
311
|
+
supported_platforms.include?(:visionOS)
|
312
|
+
end
|
313
|
+
|
310
314
|
def multiplatform?
|
311
315
|
supported_platforms.count > 1
|
312
316
|
end
|
@@ -323,6 +327,7 @@ module FastlaneCore
|
|
323
327
|
when "iphonesimulator", "iphoneos" then :iOS
|
324
328
|
when "watchsimulator", "watchos" then :watchOS
|
325
329
|
when "appletvsimulator", "appletvos" then :tvOS
|
330
|
+
when "xros", "xrsimulator" then :visionOS
|
326
331
|
end
|
327
332
|
end.uniq.compact
|
328
333
|
end
|
@@ -243,10 +243,6 @@ module Commander
|
|
243
243
|
ui.error(e.to_s)
|
244
244
|
ui.error("")
|
245
245
|
ui.error("SSL errors can be caused by various components on your local machine.")
|
246
|
-
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.1')
|
247
|
-
ui.error("Apple has recently changed their servers to require TLS 1.2, which may")
|
248
|
-
ui.error("not be available to your system installed Ruby (#{RUBY_VERSION})")
|
249
|
-
end
|
250
246
|
ui.error("")
|
251
247
|
ui.error("The best solution is to use the self-contained fastlane version.")
|
252
248
|
ui.error("Which ships with a bundled OpenSSL,ruby and all gems - so you don't depend on system libraries")
|
@@ -6,11 +6,7 @@ module FastlaneCore
|
|
6
6
|
# fastlane only customizes the global command help
|
7
7
|
return super unless name == :help
|
8
8
|
|
9
|
-
|
10
|
-
ERB.new(File.read(File.join(File.dirname(__FILE__), "help.erb")), nil, '-')
|
11
|
-
else
|
12
|
-
ERB.new(File.read(File.join(File.dirname(__FILE__), "help.erb")), trim_mode: '-')
|
13
|
-
end
|
9
|
+
ERB.new(File.read(File.join(File.dirname(__FILE__), "help.erb")), trim_mode: '-')
|
14
10
|
end
|
15
11
|
end
|
16
12
|
end
|