fastlane 2.201.2 → 2.204.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +88 -88
  3. data/deliver/lib/deliver/runner.rb +19 -2
  4. data/deliver/lib/deliver/submit_for_review.rb +25 -3
  5. data/fastlane/lib/fastlane/actions/run_tests.rb +10 -2
  6. data/fastlane/lib/fastlane/actions/trainer.rb +2 -2
  7. data/fastlane/lib/fastlane/actions/verify_build.rb +1 -1
  8. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +1 -1
  9. data/fastlane/lib/fastlane/swift_lane_manager.rb +11 -3
  10. data/fastlane/lib/fastlane/swift_runner_upgrader.rb +55 -1
  11. data/fastlane/lib/fastlane/version.rb +1 -1
  12. data/fastlane/swift/Atomic.swift +150 -0
  13. data/fastlane/swift/Deliverfile.swift +1 -1
  14. data/fastlane/swift/DeliverfileProtocol.swift +2 -2
  15. data/fastlane/swift/Fastlane.swift +195 -159
  16. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +30 -20
  17. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +1 -1
  18. data/fastlane/swift/Gymfile.swift +1 -1
  19. data/fastlane/swift/GymfileProtocol.swift +2 -2
  20. data/fastlane/swift/LaneFileProtocol.swift +1 -1
  21. data/fastlane/swift/Matchfile.swift +1 -1
  22. data/fastlane/swift/MatchfileProtocol.swift +6 -2
  23. data/fastlane/swift/Precheckfile.swift +1 -1
  24. data/fastlane/swift/PrecheckfileProtocol.swift +2 -2
  25. data/fastlane/swift/Runner.swift +9 -1
  26. data/fastlane/swift/Scanfile.swift +1 -1
  27. data/fastlane/swift/ScanfileProtocol.swift +6 -2
  28. data/fastlane/swift/Screengrabfile.swift +1 -1
  29. data/fastlane/swift/ScreengrabfileProtocol.swift +2 -2
  30. data/fastlane/swift/Snapshotfile.swift +1 -1
  31. data/fastlane/swift/SnapshotfileProtocol.swift +2 -2
  32. data/fastlane/swift/SocketClient.swift +5 -1
  33. data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
  34. data/fastlane/swift/formatting/Brewfile.lock.json +19 -19
  35. data/fastlane/swift/upgrade_manifest.json +1 -1
  36. data/fastlane_core/lib/fastlane_core/device_manager.rb +5 -1
  37. data/match/lib/match/nuke.rb +33 -9
  38. data/match/lib/match/options.rb +5 -0
  39. data/match/lib/match/storage/s3_storage.rb +3 -3
  40. data/pilot/lib/pilot/build_manager.rb +17 -7
  41. data/pilot/lib/pilot/options.rb +6 -1
  42. data/scan/lib/scan/options.rb +5 -0
  43. data/scan/lib/scan/runner.rb +18 -11
  44. data/scan/lib/scan/test_command_generator.rb +1 -0
  45. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +5 -1
  46. data/spaceship/lib/spaceship/connect_api/models/.app.rb.swp +0 -0
  47. data/spaceship/lib/spaceship/connect_api/models/app.rb +13 -2
  48. metadata +25 -24
  49. data/snapshot/lib/snapshot/.options.rb.swp +0 -0
@@ -18,6 +18,11 @@ module Pilot
18
18
 
19
19
  UI.user_error!("No ipa or pkg file given") if config[:ipa].nil? && config[:pkg].nil?
20
20
 
21
+ if config[:ipa] && config[:pkg]
22
+ UI.important("WARNING: Both `ipa` and `pkg` options are defined either explicitly or with default_value (build found in directory)")
23
+ UI.important("Uploading `ipa` is preferred by default. Set `app_platform` to `osx` to force uploading `pkg`")
24
+ end
25
+
21
26
  check_for_changelog_or_whats_new!(options)
22
27
 
23
28
  UI.success("Ready to upload new build to TestFlight (App: #{fetch_app_id})...")
@@ -25,24 +30,29 @@ module Pilot
25
30
  dir = Dir.mktmpdir
26
31
 
27
32
  platform = fetch_app_platform
28
- if options[:ipa]
33
+ ipa_path = options[:ipa]
34
+ if ipa_path && platform != 'osx'
35
+ asset_path = ipa_path
29
36
  package_path = FastlaneCore::IpaUploadPackageBuilder.new.generate(app_id: fetch_app_id,
30
- ipa_path: options[:ipa],
37
+ ipa_path: ipa_path,
31
38
  package_path: dir,
32
39
  platform: platform)
33
40
  else
41
+ pkg_path = options[:pkg]
42
+ asset_path = pkg_path
34
43
  package_path = FastlaneCore::PkgUploadPackageBuilder.new.generate(app_id: fetch_app_id,
35
- pkg_path: options[:pkg],
44
+ pkg_path: pkg_path,
36
45
  package_path: dir,
37
46
  platform: platform)
38
47
  end
39
48
 
40
49
  transporter = transporter_for_selected_team(options)
41
- result = transporter.upload(package_path: package_path, asset_path: options[:ipa] || options[:pkg])
50
+ result = transporter.upload(package_path: package_path, asset_path: asset_path)
42
51
 
43
52
  unless result
44
53
  transporter_errors = transporter.displayable_errors
45
- UI.user_error!("Error uploading ipa file: \n #{transporter_errors}")
54
+ file_type = platform == "osx" ? "pkg" : "ipa"
55
+ UI.user_error!("Error uploading #{file_type} file: \n #{transporter_errors}")
46
56
  end
47
57
 
48
58
  UI.success("Successfully uploaded the new binary to App Store Connect")
@@ -98,7 +108,7 @@ module Pilot
98
108
 
99
109
  def wait_for_build_processing_to_be_complete(return_when_build_appears = false)
100
110
  platform = fetch_app_platform
101
- if config[:ipa]
111
+ if config[:ipa] && platform != "osx"
102
112
  app_version = FastlaneCore::IpaFileAnalyser.fetch_app_version(config[:ipa])
103
113
  app_build = FastlaneCore::IpaFileAnalyser.fetch_app_build(config[:ipa])
104
114
  elsif config[:pkg]
@@ -410,7 +420,7 @@ module Pilot
410
420
  # This is where we could add a check to see if encryption is required and has been updated
411
421
  uploaded_build = set_export_compliance_if_needed(uploaded_build, options)
412
422
 
413
- if options[:groups] || options[:distribute_external]
423
+ if options[:submit_beta_review] && (options[:groups] || options[:distribute_external])
414
424
  if uploaded_build.ready_for_beta_submission?
415
425
  uploaded_build.post_beta_app_review_submission
416
426
  else
@@ -324,7 +324,12 @@ module Pilot
324
324
  env_name: "PILOT_REJECT_PREVIOUS_BUILD",
325
325
  description: "Expire previous if it's 'waiting for review'",
326
326
  is_string: false,
327
- default_value: false)
327
+ default_value: false),
328
+ FastlaneCore::ConfigItem.new(key: :submit_beta_review,
329
+ env_name: "PILOT_DISTRIBUTE_EXTERNAL",
330
+ description: "Send the build for a beta review",
331
+ type: Boolean,
332
+ default_value: true)
328
333
  ]
329
334
  end
330
335
  end
@@ -328,6 +328,11 @@ module Scan
328
328
  default_value: false),
329
329
 
330
330
  # concurrency
331
+ FastlaneCore::ConfigItem.new(key: :parallel_testing,
332
+ type: Boolean,
333
+ env_name: "SCAN_PARALLEL_TESTING",
334
+ description: "Optionally override the per-target setting in the scheme for running tests in parallel. Equivalent to -parallel-testing-enabled",
335
+ optional: true),
331
336
  FastlaneCore::ConfigItem.new(key: :concurrent_workers,
332
337
  type: Integer,
333
338
  env_name: "SCAN_CONCURRENT_WORKERS",
@@ -21,7 +21,7 @@ module Scan
21
21
 
22
22
  def run
23
23
  @xcresults_before_run = find_xcresults_in_derived_data
24
- handle_results(test_app)
24
+ return handle_results(test_app)
25
25
  end
26
26
 
27
27
  def test_app
@@ -175,6 +175,8 @@ module Scan
175
175
 
176
176
  def find_xcresults_in_derived_data
177
177
  derived_data_path = Scan.config[:derived_data_path]
178
+ return [] if derived_data_path.nil? # Swift packages might not have derived data
179
+
178
180
  xcresults_path = File.join(derived_data_path, "Logs", "Test", "*.xcresult")
179
181
  return Dir[xcresults_path]
180
182
  end
@@ -185,7 +187,9 @@ module Scan
185
187
  results = {
186
188
  number_of_tests: 0,
187
189
  number_of_failures: 0,
188
- number_of_retries: 0
190
+ number_of_retries: 0,
191
+ number_of_tests_excluding_retries: 0,
192
+ number_of_failures_excluding_retries: 0
189
193
  }
190
194
 
191
195
  result_bundle_path = Scan.cache[:result_bundle_path]
@@ -242,8 +246,10 @@ module Scan
242
246
 
243
247
  resulting_paths = Trainer::TestParser.auto_convert(params)
244
248
  resulting_paths.each do |path, data|
245
- results[:number_of_tests] += data[:number_of_tests_excluding_retries]
246
- results[:number_of_failures] += data[:number_of_failures_excluding_retries]
249
+ results[:number_of_tests] += data[:number_of_tests]
250
+ results[:number_of_failures] += data[:number_of_failures]
251
+ results[:number_of_tests_excluding_retries] += data[:number_of_tests_excluding_retries]
252
+ results[:number_of_failures_excluding_retries] += data[:number_of_failures_excluding_retries]
247
253
  results[:number_of_retries] += data[:number_of_retries]
248
254
  end
249
255
 
@@ -251,13 +257,17 @@ module Scan
251
257
  end
252
258
 
253
259
  def handle_results(tests_exit_status)
254
- return if Scan.config[:build_for_testing]
260
+ copy_simulator_logs
261
+ zip_build_products
262
+ copy_xctestrun
263
+
264
+ return nil if Scan.config[:build_for_testing]
255
265
 
256
266
  results = trainer_test_results
257
267
 
258
268
  number_of_retries = results[:number_of_retries]
259
- number_of_tests = results[:number_of_tests]
260
- number_of_failures = results[:number_of_failures]
269
+ number_of_tests = results[:number_of_tests_excluding_retries]
270
+ number_of_failures = results[:number_of_failures_excluding_retries]
261
271
 
262
272
  SlackPoster.new.run({
263
273
  tests: number_of_tests,
@@ -288,10 +298,6 @@ module Scan
288
298
  }))
289
299
  puts("")
290
300
 
291
- copy_simulator_logs
292
- zip_build_products
293
- copy_xctestrun
294
-
295
301
  if number_of_failures > 0
296
302
  open_report
297
303
 
@@ -303,6 +309,7 @@ module Scan
303
309
  end
304
310
 
305
311
  open_report
312
+ return results
306
313
  end
307
314
 
308
315
  def open_report
@@ -55,6 +55,7 @@ module Scan
55
55
  end
56
56
  options << "-resultBundlePath '#{result_bundle_path(true)}'" if config[:result_bundle]
57
57
  if FastlaneCore::Helper.xcode_at_least?(10)
58
+ options << "-parallel-testing-enabled #{config[:parallel_testing] ? 'YES' : 'NO'}" unless config[:parallel_testing].nil?
58
59
  options << "-parallel-testing-worker-count #{config[:concurrent_workers]}" if config[:concurrent_workers]
59
60
  options << "-maximum-concurrent-test-simulator-destinations #{config[:max_concurrent_simulators]}" if config[:max_concurrent_simulators]
60
61
  options << "-disable-concurrent-testing" if config[:disable_concurrent_testing]
@@ -94,7 +94,11 @@ module Snapshot
94
94
  device_udid = TestCommandGenerator.device_udid(device_type)
95
95
 
96
96
  UI.message("Launch Simulator #{device_type}")
97
- Helper.backticks("xcrun instruments -w #{device_udid} &> /dev/null")
97
+ if FastlaneCore::Helper.xcode_at_least?("13")
98
+ Helper.backticks("open -a Simulator.app --args -CurrentDeviceUDID #{device_udid} &> /dev/null")
99
+ else
100
+ Helper.backticks("xcrun instruments -w #{device_udid} &> /dev/null")
101
+ end
98
102
 
99
103
  paths.each do |path|
100
104
  UI.message("Adding '#{path}'")
@@ -78,7 +78,17 @@ module Spaceship
78
78
 
79
79
  def self.find(bundle_id, client: nil)
80
80
  client ||= Spaceship::ConnectAPI
81
- return all(client: client, filter: { bundleId: bundle_id }).find do |app|
81
+
82
+ # On 2022/2/2, filtering by bundle identifier started to fail for identifiers longer than 25 characters
83
+ # Temporarily removing this filter and filtering locally until this is fixed
84
+ #
85
+ # Also go uncomment the tests in spaceship/spec/connectapi/models/app_spec.rb when this is fixed
86
+ #
87
+ # return all(client: client, filter: { bundleId: bundle_id }).find do |app|
88
+ # app.bundle_id == bundle_id
89
+ # end
90
+
91
+ return all(client: client).find do |app|
82
92
  app.bundle_id == bundle_id
83
93
  end
84
94
  end
@@ -435,7 +445,8 @@ module Spaceship
435
445
  client ||= Spaceship::ConnectAPI
436
446
  filter = {
437
447
  state: [
438
- Spaceship::ConnectAPI::ReviewSubmission::ReviewSubmissionState::WAITING_FOR_REVIEW
448
+ Spaceship::ConnectAPI::ReviewSubmission::ReviewSubmissionState::WAITING_FOR_REVIEW,
449
+ Spaceship::ConnectAPI::ReviewSubmission::ReviewSubmissionState::IN_REVIEW
439
450
  ].join(","),
440
451
  platform: platform
441
452
  }
metadata CHANGED
@@ -1,39 +1,39 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.201.2
4
+ version: 2.204.1
5
5
  platform: ruby
6
6
  authors:
7
- - Manish Rathi
8
- - Max Ott
9
- - Olivier Halligon
10
- - Jimmy Dee
11
- - Josh Holtz
12
- - Aaron Brager
13
- - Luka Mirosevic
14
7
  - Iulian Onofrei
15
- - Matthew Ellis
16
- - Jérôme Lacoste
17
- - Felix Krause
18
- - Fumiya Nakamura
19
- - Maksym Grebenets
20
- - Danielle Tomlinson
21
- - Daniel Jankowski
8
+ - Joshua Liebowitz
9
+ - Aaron Brager
10
+ - Helmut Januschka
11
+ - Manish Rathi
22
12
  - Łukasz Grabowski
23
- - Manu Wallner
24
13
  - Andrew McBurney
25
- - Stefan Natchev
26
- - Jan Piotrowski
27
- - Joshua Liebowitz
28
14
  - Jorge Revuelta H
29
- - Satoshi Namai
30
- - Roger Oba
15
+ - Jan Piotrowski
16
+ - Maksym Grebenets
17
+ - Matthew Ellis
18
+ - Felix Krause
31
19
  - Kohki Miki
32
- - Helmut Januschka
20
+ - Manu Wallner
21
+ - Daniel Jankowski
22
+ - Danielle Tomlinson
23
+ - Fumiya Nakamura
24
+ - Jimmy Dee
25
+ - Max Ott
26
+ - Luka Mirosevic
27
+ - Roger Oba
28
+ - Olivier Halligon
29
+ - Satoshi Namai
30
+ - Stefan Natchev
31
+ - Josh Holtz
32
+ - Jérôme Lacoste
33
33
  autorequire:
34
34
  bindir: bin
35
35
  cert_chain: []
36
- date: 2022-01-25 00:00:00.000000000 Z
36
+ date: 2022-02-03 00:00:00.000000000 Z
37
37
  dependencies:
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: xcodeproj
@@ -1354,6 +1354,7 @@ files:
1354
1354
  - fastlane/swift/Actions.swift
1355
1355
  - fastlane/swift/Appfile.swift
1356
1356
  - fastlane/swift/ArgumentProcessor.swift
1357
+ - fastlane/swift/Atomic.swift
1357
1358
  - fastlane/swift/ControlCommand.swift
1358
1359
  - fastlane/swift/Deliverfile.swift
1359
1360
  - fastlane/swift/DeliverfileProtocol.swift
@@ -1620,7 +1621,6 @@ files:
1620
1621
  - snapshot/lib/assets/SnapshotHelper.swift
1621
1622
  - snapshot/lib/assets/SnapshotHelperXcode8.swift
1622
1623
  - snapshot/lib/snapshot.rb
1623
- - snapshot/lib/snapshot/.options.rb.swp
1624
1624
  - snapshot/lib/snapshot/collector.rb
1625
1625
  - snapshot/lib/snapshot/commands_generator.rb
1626
1626
  - snapshot/lib/snapshot/dependency_checker.rb
@@ -1661,6 +1661,7 @@ files:
1661
1661
  - spaceship/lib/spaceship/connect_api/client.rb
1662
1662
  - spaceship/lib/spaceship/connect_api/file_uploader.rb
1663
1663
  - spaceship/lib/spaceship/connect_api/model.rb
1664
+ - spaceship/lib/spaceship/connect_api/models/.app.rb.swp
1664
1665
  - spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb
1665
1666
  - spaceship/lib/spaceship/connect_api/models/app.rb
1666
1667
  - spaceship/lib/spaceship/connect_api/models/app_category.rb
Binary file