fastlane 2.225.0 → 2.227.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.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +98 -98
  3. data/cert/lib/cert/options.rb +7 -2
  4. data/cert/lib/cert/runner.rb +23 -11
  5. data/deliver/lib/deliver/options.rb +1 -1
  6. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +1 -1
  7. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +1 -1
  8. data/fastlane/lib/fastlane/actions/import_from_git.rb +11 -4
  9. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +1 -1
  10. data/fastlane/lib/fastlane/actions/notarize.rb +4 -0
  11. data/fastlane/lib/fastlane/actions/onesignal.rb +1 -1
  12. data/fastlane/lib/fastlane/actions/register_device.rb +1 -1
  13. data/fastlane/lib/fastlane/actions/register_devices.rb +1 -1
  14. data/fastlane/lib/fastlane/actions/setup_ci.rb +14 -4
  15. data/fastlane/lib/fastlane/actions/testfairy.rb +41 -4
  16. data/fastlane/lib/fastlane/actions/unlock_keychain.rb +6 -1
  17. data/fastlane/lib/fastlane/fast_file.rb +9 -6
  18. data/fastlane/lib/fastlane/version.rb +1 -1
  19. data/fastlane/swift/Actions.swift +1 -1
  20. data/fastlane/swift/Appfile.swift +1 -1
  21. data/fastlane/swift/ArgumentProcessor.swift +1 -1
  22. data/fastlane/swift/Atomic.swift +1 -1
  23. data/fastlane/swift/ControlCommand.swift +1 -1
  24. data/fastlane/swift/Deliverfile.swift +2 -2
  25. data/fastlane/swift/DeliverfileProtocol.swift +2 -2
  26. data/fastlane/swift/Fastlane.swift +39 -13
  27. data/fastlane/swift/Gymfile.swift +2 -2
  28. data/fastlane/swift/GymfileProtocol.swift +2 -2
  29. data/fastlane/swift/LaneFileProtocol.swift +1 -1
  30. data/fastlane/swift/MainProcess.swift +1 -1
  31. data/fastlane/swift/Matchfile.swift +2 -2
  32. data/fastlane/swift/MatchfileProtocol.swift +2 -2
  33. data/fastlane/swift/OptionalConfigValue.swift +1 -1
  34. data/fastlane/swift/Plugins.swift +1 -1
  35. data/fastlane/swift/Precheckfile.swift +2 -2
  36. data/fastlane/swift/PrecheckfileProtocol.swift +2 -2
  37. data/fastlane/swift/RubyCommand.swift +1 -1
  38. data/fastlane/swift/RubyCommandable.swift +1 -1
  39. data/fastlane/swift/Runner.swift +1 -1
  40. data/fastlane/swift/RunnerArgument.swift +1 -1
  41. data/fastlane/swift/Scanfile.swift +2 -2
  42. data/fastlane/swift/ScanfileProtocol.swift +2 -2
  43. data/fastlane/swift/Screengrabfile.swift +2 -2
  44. data/fastlane/swift/ScreengrabfileProtocol.swift +2 -2
  45. data/fastlane/swift/Snapshotfile.swift +2 -2
  46. data/fastlane/swift/SnapshotfileProtocol.swift +2 -2
  47. data/fastlane/swift/SocketClient.swift +1 -1
  48. data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
  49. data/fastlane/swift/SocketResponse.swift +1 -1
  50. data/fastlane/swift/main.swift +1 -1
  51. data/fastlane_core/lib/fastlane_core/helper.rb +6 -1
  52. data/match/lib/assets/READMETemplate.md +2 -2
  53. data/match/lib/match/generator.rb +2 -2
  54. data/match/lib/match/runner.rb +1 -1
  55. data/precheck/lib/precheck/options.rb +1 -1
  56. data/produce/lib/produce/options.rb +1 -1
  57. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +1 -0
  58. data/supply/lib/supply/uploader.rb +22 -11
  59. data/trainer/lib/trainer/legacy_xcresult.rb +586 -0
  60. data/trainer/lib/trainer/options.rb +5 -0
  61. data/trainer/lib/trainer/plist_test_summary_parser.rb +84 -0
  62. data/trainer/lib/trainer/test_parser.rb +12 -293
  63. data/trainer/lib/trainer/xcresult/helper.rb +53 -0
  64. data/trainer/lib/trainer/xcresult/repetition.rb +39 -0
  65. data/trainer/lib/trainer/xcresult/test_case.rb +221 -0
  66. data/trainer/lib/trainer/xcresult/test_case_attributes.rb +49 -0
  67. data/trainer/lib/trainer/xcresult/test_plan.rb +91 -0
  68. data/trainer/lib/trainer/xcresult/test_suite.rb +134 -0
  69. data/trainer/lib/trainer/xcresult.rb +31 -388
  70. data/trainer/lib/trainer.rb +3 -1
  71. metadata +31 -23
@@ -42,7 +42,12 @@ module Fastlane
42
42
  end
43
43
 
44
44
  def self.replace_keychain_in_search_list(keychain_path)
45
- Actions.lane_context[Actions::SharedValues::ORIGINAL_DEFAULT_KEYCHAIN] = Fastlane::Actions.sh("security default-keychain", log: false).strip
45
+ begin
46
+ UI.message("Reading existing default keychain")
47
+ Actions.lane_context[Actions::SharedValues::ORIGINAL_DEFAULT_KEYCHAIN] = Fastlane::Actions.sh("security default-keychain").strip
48
+ rescue => e
49
+ raise unless e.message.include?("security: SecKeychainCopyDefault: A default keychain could not be found.")
50
+ end
46
51
  escaped_path = keychain_path.shellescape
47
52
  Fastlane::Actions.sh("security list-keychains -s #{escaped_path}", log: false)
48
53
  end
@@ -278,7 +278,8 @@ module Fastlane
278
278
  # @param version [String, Array] Version requirement for repo tags
279
279
  # @param dependencies [Array] An optional array of additional Fastfiles in the repository
280
280
  # @param cache_path [String] An optional path to a directory where the repository should be cloned into
281
- def import_from_git(url: nil, branch: 'HEAD', path: 'fastlane/Fastfile', version: nil, dependencies: [], cache_path: nil) # rubocop:disable Metrics/PerceivedComplexity
281
+ # @param git_extra_headers [Array] An optional array of custom HTTP headers to access the git repo (`Authorization: Basic <YOUR BASE64 KEY>`, `Cache-Control: no-cache`, etc.)
282
+ def import_from_git(url: nil, branch: 'HEAD', path: 'fastlane/Fastfile', version: nil, dependencies: [], cache_path: nil, git_extra_headers: []) # rubocop:disable Metrics/PerceivedComplexity
282
283
  UI.user_error!("Please pass a path to the `import_from_git` action") if url.to_s.length == 0
283
284
 
284
285
  Actions.execute_action('import_from_git') do
@@ -297,8 +298,6 @@ module Fastlane
297
298
  import_block = proc do |target_path|
298
299
  clone_folder = File.join(target_path, repo_name)
299
300
 
300
- branch_option = "--branch #{branch}" if branch != 'HEAD'
301
-
302
301
  checkout_dependencies = dependencies.map(&:shellescape).join(" ")
303
302
 
304
303
  # If the current call is eligible for caching, we check out all the
@@ -309,12 +308,16 @@ module Fastlane
309
308
  if Dir[clone_folder].empty?
310
309
  UI.message("Cloning remote git repo...")
311
310
  Helper.with_env_values('GIT_TERMINAL_PROMPT' => '0') do
311
+ command = ['git', 'clone', url, clone_folder, '--no-checkout']
312
312
  # When using cached clones, we need the entire repository history
313
313
  # so we can switch between tags or branches instantly, or else,
314
314
  # it would defeat the caching's purpose.
315
- depth = is_eligible_for_caching ? "" : "--depth 1"
316
-
317
- Actions.sh("git clone #{url.shellescape} #{clone_folder.shellescape} #{depth} --no-checkout #{branch_option}")
315
+ command += ['--depth', '1'] unless is_eligible_for_caching
316
+ command += ['--branch', branch] unless branch == 'HEAD'
317
+ git_extra_headers.each do |header|
318
+ command += ['--config', "http.extraHeader=#{header}"]
319
+ end
320
+ Actions.sh(*command)
318
321
  end
319
322
  end
320
323
 
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.225.0'.freeze
2
+ VERSION = '2.227.0'.freeze
3
3
  SUMMARY = "The easiest way to build and release mobile apps.".freeze
4
4
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
5
5
  MINIMUM_XCODE_RELEASE = "7.0".freeze
@@ -1,5 +1,5 @@
1
1
  // Actions.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  // This autogenerated file will be overwritten or replaced when running "fastlane generate_swift"
5
5
  //
@@ -1,5 +1,5 @@
1
1
  // Appfile.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  var appIdentifier: String { return "" } // The bundle identifier of your app
5
5
  var appleID: String { return "" } // Your Apple Developer Portal username
@@ -1,5 +1,5 @@
1
1
  // ArgumentProcessor.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // Atomic.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  import Foundation
5
5
 
@@ -1,5 +1,5 @@
1
1
  // ControlCommand.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // Deliverfile.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  // This class is automatically included in FastlaneRunner during build
5
5
 
@@ -17,4 +17,4 @@ public class Deliverfile: DeliverfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.225.0
20
+ // Generated with fastlane 2.227.0
@@ -1,5 +1,5 @@
1
1
  // DeliverfileProtocol.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  public protocol DeliverfileProtocol: AnyObject {
5
5
  /// Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
@@ -272,4 +272,4 @@ public extension DeliverfileProtocol {
272
272
 
273
273
  // Please don't remove the lines below
274
274
  // They are used to detect outdated files
275
- // FastlaneRunnerAPIVersion [0.9.131]
275
+ // FastlaneRunnerAPIVersion [0.9.133]
@@ -1,5 +1,5 @@
1
1
  // Fastlane.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  import Foundation
5
5
 
@@ -2690,7 +2690,7 @@ public func cert(development: OptionalConfigValue<Bool> = .fastlaneDefault(false
2690
2690
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2691
2691
  filename: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2692
2692
  outputPath: String = ".",
2693
- keychainPath: String,
2693
+ keychainPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2694
2694
  keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2695
2695
  skipSetPartitionList: OptionalConfigValue<Bool> = .fastlaneDefault(false),
2696
2696
  platform: String = "ios")
@@ -2706,7 +2706,7 @@ public func cert(development: OptionalConfigValue<Bool> = .fastlaneDefault(false
2706
2706
  let teamNameArg = teamName.asRubyArgument(name: "team_name", type: nil)
2707
2707
  let filenameArg = filename.asRubyArgument(name: "filename", type: nil)
2708
2708
  let outputPathArg = RubyCommand.Argument(name: "output_path", value: outputPath, type: nil)
2709
- let keychainPathArg = RubyCommand.Argument(name: "keychain_path", value: keychainPath, type: nil)
2709
+ let keychainPathArg = keychainPath.asRubyArgument(name: "keychain_path", type: nil)
2710
2710
  let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
2711
2711
  let skipSetPartitionListArg = skipSetPartitionList.asRubyArgument(name: "skip_set_partition_list", type: nil)
2712
2712
  let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
@@ -4842,7 +4842,7 @@ public func getCertificates(development: OptionalConfigValue<Bool> = .fastlaneDe
4842
4842
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
4843
4843
  filename: OptionalConfigValue<String?> = .fastlaneDefault(nil),
4844
4844
  outputPath: String = ".",
4845
- keychainPath: String,
4845
+ keychainPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
4846
4846
  keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(nil),
4847
4847
  skipSetPartitionList: OptionalConfigValue<Bool> = .fastlaneDefault(false),
4848
4848
  platform: String = "ios")
@@ -4858,7 +4858,7 @@ public func getCertificates(development: OptionalConfigValue<Bool> = .fastlaneDe
4858
4858
  let teamNameArg = teamName.asRubyArgument(name: "team_name", type: nil)
4859
4859
  let filenameArg = filename.asRubyArgument(name: "filename", type: nil)
4860
4860
  let outputPathArg = RubyCommand.Argument(name: "output_path", value: outputPath, type: nil)
4861
- let keychainPathArg = RubyCommand.Argument(name: "keychain_path", value: keychainPath, type: nil)
4861
+ let keychainPathArg = keychainPath.asRubyArgument(name: "keychain_path", type: nil)
4862
4862
  let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
4863
4863
  let skipSetPartitionListArg = skipSetPartitionList.asRubyArgument(name: "skip_set_partition_list", type: nil)
4864
4864
  let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
@@ -9931,6 +9931,7 @@ public func setPodKey(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefaul
9931
9931
  - force: Force setup, even if not executed by CI
9932
9932
  - provider: CI provider. If none is set, the provider is detected automatically
9933
9933
  - timeout: Set a custom timeout in seconds for keychain. Set `0` if you want to specify 'no time-out'
9934
+ - keychainName: Set a custom keychain name
9934
9935
 
9935
9936
  - Creates a new temporary keychain for use with match|
9936
9937
  - Switches match to `readonly` mode to not create new profiles/cert on CI|
@@ -9940,14 +9941,17 @@ public func setPodKey(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefaul
9940
9941
  */
9941
9942
  public func setupCi(force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
9942
9943
  provider: OptionalConfigValue<String?> = .fastlaneDefault(nil),
9943
- timeout: Int = 3600)
9944
+ timeout: Int = 3600,
9945
+ keychainName: String = "fastlane_tmp_keychain")
9944
9946
  {
9945
9947
  let forceArg = force.asRubyArgument(name: "force", type: nil)
9946
9948
  let providerArg = provider.asRubyArgument(name: "provider", type: nil)
9947
9949
  let timeoutArg = RubyCommand.Argument(name: "timeout", value: timeout, type: nil)
9950
+ let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
9948
9951
  let array: [RubyCommand.Argument?] = [forceArg,
9949
9952
  providerArg,
9950
- timeoutArg]
9953
+ timeoutArg,
9954
+ keychainNameArg]
9951
9955
  let args: [RubyCommand.Argument] = array
9952
9956
  .filter { $0?.value != nil }
9953
9957
  .compactMap { $0 }
@@ -11588,7 +11592,7 @@ public func teamName() {
11588
11592
  }
11589
11593
 
11590
11594
  /**
11591
- Upload a new build to [TestFairy](https://www.testfairy.com/)
11595
+ Upload a new build to SauceLabs' TestFairy
11592
11596
 
11593
11597
  - parameters:
11594
11598
  - apiKey: API Key for TestFairy
@@ -11602,11 +11606,17 @@ public func teamName() {
11602
11606
  - autoUpdate: Allows an easy upgrade of all users to the current version. To enable set to 'on'
11603
11607
  - notify: Send email to testers
11604
11608
  - options: Array of options (shake,video_only_wifi,anonymous)
11605
- - custom: Array of custom options. Contact support@testfairy.com for more information
11609
+ - custom: Array of custom options. Contact support for more information
11606
11610
  - timeout: Request timeout in seconds
11607
11611
  - tags: Custom tags that can be used to organize your builds
11612
+ - folderName: Name of the dashboard folder that contains this app
11613
+ - landingPageMode: Visibility of build landing after upload. Can be 'open' or 'closed'
11614
+ - uploadToSaucelabs: Upload file directly to Sauce Labs. It can be 'on' or 'off'
11615
+ - platform: Use if upload build is not iOS or Android. Contact support for more information
11616
+
11617
+ Upload a new build to [TestFairy](https://saucelabs.com/products/mobile-testing/app-betas).
11618
+ You can retrieve your API key on [your settings page](https://app.testfairy.com/settings/access-key)
11608
11619
 
11609
- You can retrieve your API key on [your settings page](https://free.testfairy.com/settings/)
11610
11620
  */
11611
11621
  public func testfairy(apiKey: String,
11612
11622
  ipa: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -11621,7 +11631,11 @@ public func testfairy(apiKey: String,
11621
11631
  options: [String] = [],
11622
11632
  custom: String = "",
11623
11633
  timeout: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
11624
- tags: [String] = [])
11634
+ tags: [String] = [],
11635
+ folderName: String = "",
11636
+ landingPageMode: String = "open",
11637
+ uploadToSaucelabs: String = "off",
11638
+ platform: String = "")
11625
11639
  {
11626
11640
  let apiKeyArg = RubyCommand.Argument(name: "api_key", value: apiKey, type: nil)
11627
11641
  let ipaArg = ipa.asRubyArgument(name: "ipa", type: nil)
@@ -11637,6 +11651,10 @@ public func testfairy(apiKey: String,
11637
11651
  let customArg = RubyCommand.Argument(name: "custom", value: custom, type: nil)
11638
11652
  let timeoutArg = timeout.asRubyArgument(name: "timeout", type: nil)
11639
11653
  let tagsArg = RubyCommand.Argument(name: "tags", value: tags, type: nil)
11654
+ let folderNameArg = RubyCommand.Argument(name: "folder_name", value: folderName, type: nil)
11655
+ let landingPageModeArg = RubyCommand.Argument(name: "landing_page_mode", value: landingPageMode, type: nil)
11656
+ let uploadToSaucelabsArg = RubyCommand.Argument(name: "upload_to_saucelabs", value: uploadToSaucelabs, type: nil)
11657
+ let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
11640
11658
  let array: [RubyCommand.Argument?] = [apiKeyArg,
11641
11659
  ipaArg,
11642
11660
  apkArg,
@@ -11650,7 +11668,11 @@ public func testfairy(apiKey: String,
11650
11668
  optionsArg,
11651
11669
  customArg,
11652
11670
  timeoutArg,
11653
- tagsArg]
11671
+ tagsArg,
11672
+ folderNameArg,
11673
+ landingPageModeArg,
11674
+ uploadToSaucelabsArg,
11675
+ platformArg]
11654
11676
  let args: [RubyCommand.Argument] = array
11655
11677
  .filter { $0?.value != nil }
11656
11678
  .compactMap { $0 }
@@ -11840,6 +11862,7 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
11840
11862
  - outputFilename: Filename the xml file should be written to. Defaults to name of input file. (Only works if one input file is used)
11841
11863
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're handling this with a test reporter
11842
11864
  - xcprettyNaming: Produces class name and test name identical to xcpretty naming in junit file
11865
+ - forceLegacyXcresulttool: Force the use of the '--legacy' flag for xcresulttool instead of using the new commands
11843
11866
  - silent: Silences all output
11844
11867
  - outputRemoveRetryAttempts: Doesn't include retry attempts in the output
11845
11868
 
@@ -11851,6 +11874,7 @@ public func trainer(path: String = ".",
11851
11874
  outputFilename: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11852
11875
  failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(true),
11853
11876
  xcprettyNaming: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11877
+ forceLegacyXcresulttool: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11854
11878
  silent: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11855
11879
  outputRemoveRetryAttempts: OptionalConfigValue<Bool> = .fastlaneDefault(false))
11856
11880
  {
@@ -11860,6 +11884,7 @@ public func trainer(path: String = ".",
11860
11884
  let outputFilenameArg = outputFilename.asRubyArgument(name: "output_filename", type: nil)
11861
11885
  let failBuildArg = failBuild.asRubyArgument(name: "fail_build", type: nil)
11862
11886
  let xcprettyNamingArg = xcprettyNaming.asRubyArgument(name: "xcpretty_naming", type: nil)
11887
+ let forceLegacyXcresulttoolArg = forceLegacyXcresulttool.asRubyArgument(name: "force_legacy_xcresulttool", type: nil)
11863
11888
  let silentArg = silent.asRubyArgument(name: "silent", type: nil)
11864
11889
  let outputRemoveRetryAttemptsArg = outputRemoveRetryAttempts.asRubyArgument(name: "output_remove_retry_attempts", type: nil)
11865
11890
  let array: [RubyCommand.Argument?] = [pathArg,
@@ -11868,6 +11893,7 @@ public func trainer(path: String = ".",
11868
11893
  outputFilenameArg,
11869
11894
  failBuildArg,
11870
11895
  xcprettyNamingArg,
11896
+ forceLegacyXcresulttoolArg,
11871
11897
  silentArg,
11872
11898
  outputRemoveRetryAttemptsArg]
11873
11899
  let args: [RubyCommand.Argument] = array
@@ -13861,4 +13887,4 @@ public let snapshotfile: Snapshotfile = .init()
13861
13887
 
13862
13888
  // Please don't remove the lines below
13863
13889
  // They are used to detect outdated files
13864
- // FastlaneRunnerAPIVersion [0.9.184]
13890
+ // FastlaneRunnerAPIVersion [0.9.186]
@@ -1,5 +1,5 @@
1
1
  // Gymfile.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  // This class is automatically included in FastlaneRunner during build
5
5
 
@@ -17,4 +17,4 @@ public class Gymfile: GymfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.225.0
20
+ // Generated with fastlane 2.227.0
@@ -1,5 +1,5 @@
1
1
  // GymfileProtocol.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  public protocol GymfileProtocol: AnyObject {
5
5
  /// Path to the workspace file
@@ -212,4 +212,4 @@ public extension GymfileProtocol {
212
212
 
213
213
  // Please don't remove the lines below
214
214
  // They are used to detect outdated files
215
- // FastlaneRunnerAPIVersion [0.9.134]
215
+ // FastlaneRunnerAPIVersion [0.9.136]
@@ -1,5 +1,5 @@
1
1
  // LaneFileProtocol.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // MainProcess.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // Matchfile.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  // This class is automatically included in FastlaneRunner during build
5
5
 
@@ -17,4 +17,4 @@ public class Matchfile: MatchfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.225.0
20
+ // Generated with fastlane 2.227.0
@@ -1,5 +1,5 @@
1
1
  // MatchfileProtocol.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  public protocol MatchfileProtocol: AnyObject {
5
5
  /// Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution, developer_id_installer
@@ -232,4 +232,4 @@ public extension MatchfileProtocol {
232
232
 
233
233
  // Please don't remove the lines below
234
234
  // They are used to detect outdated files
235
- // FastlaneRunnerAPIVersion [0.9.128]
235
+ // FastlaneRunnerAPIVersion [0.9.130]
@@ -1,5 +1,5 @@
1
1
  // OptionalConfigValue.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // Plugins.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  // This autogenerated file will be overwritten or replaced when installing/updating plugins or running "fastlane generate_swift"
5
5
  //
@@ -1,5 +1,5 @@
1
1
  // Precheckfile.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  // This class is automatically included in FastlaneRunner during build
5
5
 
@@ -17,4 +17,4 @@ public class Precheckfile: PrecheckfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.225.0
20
+ // Generated with fastlane 2.227.0
@@ -1,5 +1,5 @@
1
1
  // PrecheckfileProtocol.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  public protocol PrecheckfileProtocol: AnyObject {
5
5
  /// Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
@@ -52,4 +52,4 @@ public extension PrecheckfileProtocol {
52
52
 
53
53
  // Please don't remove the lines below
54
54
  // They are used to detect outdated files
55
- // FastlaneRunnerAPIVersion [0.9.127]
55
+ // FastlaneRunnerAPIVersion [0.9.129]
@@ -1,5 +1,5 @@
1
1
  // RubyCommand.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // RubyCommandable.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // Runner.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // RunnerArgument.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // Scanfile.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  // This class is automatically included in FastlaneRunner during build
5
5
 
@@ -17,4 +17,4 @@ public class Scanfile: ScanfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.225.0
20
+ // Generated with fastlane 2.227.0
@@ -1,5 +1,5 @@
1
1
  // ScanfileProtocol.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  public protocol ScanfileProtocol: AnyObject {
5
5
  /// Path to the workspace file
@@ -324,4 +324,4 @@ public extension ScanfileProtocol {
324
324
 
325
325
  // Please don't remove the lines below
326
326
  // They are used to detect outdated files
327
- // FastlaneRunnerAPIVersion [0.9.139]
327
+ // FastlaneRunnerAPIVersion [0.9.141]
@@ -1,5 +1,5 @@
1
1
  // Screengrabfile.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  // This class is automatically included in FastlaneRunner during build
5
5
 
@@ -17,4 +17,4 @@ public class Screengrabfile: ScreengrabfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.225.0
20
+ // Generated with fastlane 2.227.0
@@ -1,5 +1,5 @@
1
1
  // ScreengrabfileProtocol.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  public protocol ScreengrabfileProtocol: AnyObject {
5
5
  /// Path to the root of your Android SDK installation, e.g. ~/tools/android-sdk-macosx
@@ -96,4 +96,4 @@ public extension ScreengrabfileProtocol {
96
96
 
97
97
  // Please don't remove the lines below
98
98
  // They are used to detect outdated files
99
- // FastlaneRunnerAPIVersion [0.9.129]
99
+ // FastlaneRunnerAPIVersion [0.9.131]
@@ -1,5 +1,5 @@
1
1
  // Snapshotfile.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  // This class is automatically included in FastlaneRunner during build
5
5
 
@@ -17,4 +17,4 @@ public class Snapshotfile: SnapshotfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.225.0
20
+ // Generated with fastlane 2.227.0
@@ -1,5 +1,5 @@
1
1
  // SnapshotfileProtocol.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  public protocol SnapshotfileProtocol: AnyObject {
5
5
  /// Path to the workspace file
@@ -208,4 +208,4 @@ public extension SnapshotfileProtocol {
208
208
 
209
209
  // Please don't remove the lines below
210
210
  // They are used to detect outdated files
211
- // FastlaneRunnerAPIVersion [0.9.123]
211
+ // FastlaneRunnerAPIVersion [0.9.125]
@@ -1,5 +1,5 @@
1
1
  // SocketClient.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // SocketClientDelegateProtocol.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // SocketResponse.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // main.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2025 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -74,7 +74,7 @@ module FastlaneCore
74
74
  return true if self.is_circle_ci?
75
75
 
76
76
  # Check for Jenkins, Travis CI, ... environment variables
77
- ['JENKINS_HOME', 'JENKINS_URL', 'TRAVIS', 'CI', 'APPCENTER_BUILD_ID', 'TEAMCITY_VERSION', 'GO_PIPELINE_NAME', 'bamboo_buildKey', 'GITLAB_CI', 'XCS', 'TF_BUILD', 'GITHUB_ACTION', 'GITHUB_ACTIONS', 'BITRISE_IO', 'BUDDY'].each do |current|
77
+ ['JENKINS_HOME', 'JENKINS_URL', 'TRAVIS', 'CI', 'APPCENTER_BUILD_ID', 'TEAMCITY_VERSION', 'GO_PIPELINE_NAME', 'bamboo_buildKey', 'GITLAB_CI', 'XCS', 'TF_BUILD', 'GITHUB_ACTION', 'GITHUB_ACTIONS', 'BITRISE_IO', 'BUDDY', 'CODEBUILD_BUILD_ARN'].each do |current|
78
78
  return true if FastlaneCore::Env.truthy?(current)
79
79
  end
80
80
  return false
@@ -84,6 +84,11 @@ module FastlaneCore
84
84
  return ENV.key?('CIRCLECI')
85
85
  end
86
86
 
87
+ # @return [boolean] true if environment variable CODEBUILD_BUILD_ARN is set
88
+ def self.is_codebuild?
89
+ return ENV.key?('CODEBUILD_BUILD_ARN')
90
+ end
91
+
87
92
  def self.operating_system
88
93
  return "macOS" if RUBY_PLATFORM.downcase.include?("darwin")
89
94
  return "Windows" if RUBY_PLATFORM.downcase.include?("mswin")
@@ -1,11 +1,11 @@
1
1
  ## [fastlane match](https://docs.fastlane.tools/actions/match/)
2
2
 
3
+ > Do not modify this file, as it gets overwritten every time you run _match_.
4
+
3
5
  This repository contains all your certificates and provisioning profiles needed to build and sign your applications. They are encrypted using OpenSSL via a passphrase.
4
6
 
5
7
  **Important:** Make sure this repository is set to private and only your team members have access to this repo.
6
8
 
7
- Do not modify this file, as it gets overwritten every time you run _match_.
8
-
9
9
  ### Installation
10
10
 
11
11
  Make sure you have the latest version of the Xcode command line tools installed:
@@ -32,8 +32,8 @@ module Match
32
32
  username: params[:username],
33
33
  team_id: params[:team_id],
34
34
  team_name: params[:team_name],
35
- keychain_path: FastlaneCore::Helper.keychain_path(params[:keychain_name]),
36
- keychain_password: params[:keychain_password],
35
+ keychain_path: Helper.mac? ? FastlaneCore::Helper.keychain_path(params[:keychain_name]) : nil,
36
+ keychain_password: Helper.mac? ? params[:keychain_password] : nil,
37
37
  skip_set_partition_list: params[:skip_set_partition_list]
38
38
  })
39
39
 
@@ -56,7 +56,7 @@ module Match
56
56
 
57
57
  unless params[:readonly]
58
58
  self.spaceship = SpaceshipEnsure.new(params[:username], params[:team_id], params[:team_name], api_token(params))
59
- if params[:type] == "enterprise" && !Spaceship.client.in_house?
59
+ if params[:type] == "enterprise" && !Spaceship::ConnectAPI.client.in_house?
60
60
  UI.user_error!("You defined the profile type 'enterprise', but your Apple account doesn't support In-House profiles")
61
61
  end
62
62
  end
@@ -84,7 +84,7 @@ module Precheck
84
84
  optional: true,
85
85
  default_value: "ios",
86
86
  verify_block: proc do |value|
87
- UI.user_error!("The platform can only be ios, appletvos, or osx") unless %('ios', 'appletvos', 'osx').include?(value)
87
+ UI.user_error!("The platform can only be ios, appletvos/tvos or osx") unless %w(ios appletvos tvos osx).include?(value)
88
88
  end),
89
89
  FastlaneCore::ConfigItem.new(key: :default_rule_level,
90
90
  short_option: "-r",