fastlane 2.202.0 → 2.212.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +98 -98
- data/cert/lib/cert/runner.rb +15 -7
- data/deliver/lib/deliver/app_screenshot.rb +18 -0
- data/deliver/lib/deliver/options.rb +6 -2
- data/deliver/lib/deliver/runner.rb +76 -29
- data/deliver/lib/deliver/upload_price_tier.rb +3 -1
- data/deliver/lib/deliver/upload_screenshots.rb +1 -1
- data/fastlane/lib/assets/AppfileTemplate +1 -1
- data/fastlane/lib/assets/AppfileTemplate.swift +1 -1
- data/fastlane/lib/fastlane/actions/badge.rb +1 -1
- data/fastlane/lib/fastlane/actions/changelog_from_git_commits.rb +1 -1
- data/fastlane/lib/fastlane/actions/danger.rb +14 -0
- data/fastlane/lib/fastlane/actions/docs/build_app.md +5 -5
- data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +19 -2
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -1
- data/fastlane/lib/fastlane/actions/docs/run_tests.md +1 -1
- data/fastlane/lib/fastlane/actions/get_version_number.rb +1 -1
- data/fastlane/lib/fastlane/actions/git_commit.rb +4 -6
- data/fastlane/lib/fastlane/actions/import_certificate.rb +1 -1
- data/fastlane/lib/fastlane/actions/pod_lib_lint.rb +1 -1
- data/fastlane/lib/fastlane/actions/pod_push.rb +19 -1
- data/fastlane/lib/fastlane/actions/read_podspec.rb +1 -1
- data/fastlane/lib/fastlane/actions/run_tests.rb +11 -9
- data/fastlane/lib/fastlane/actions/setup_ci.rb +13 -4
- data/fastlane/lib/fastlane/actions/trainer.rb +2 -2
- data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +14 -4
- data/fastlane/lib/fastlane/actions/update_info_plist.rb +1 -1
- data/fastlane/lib/fastlane/actions/update_project_provisioning.rb +10 -1
- data/fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb +1 -1
- data/fastlane/lib/fastlane/actions/verify_build.rb +1 -1
- data/fastlane/lib/fastlane/actions/xcode_install.rb +5 -1
- data/fastlane/lib/fastlane/actions/xcode_select.rb +1 -1
- data/fastlane/lib/fastlane/actions/xcodebuild.rb +8 -2
- data/fastlane/lib/fastlane/actions/xcodes.rb +152 -0
- data/fastlane/lib/fastlane/actions/xcversion.rb +10 -15
- data/fastlane/lib/fastlane/cli_tools_distributor.rb +5 -0
- data/fastlane/lib/fastlane/commands_generator.rb +2 -1
- data/fastlane/lib/fastlane/fast_file.rb +18 -5
- data/fastlane/lib/fastlane/features.rb +3 -0
- data/fastlane/lib/fastlane/helper/xcodes_helper.rb +28 -0
- data/fastlane/lib/fastlane/helper/xcversion_helper.rb +0 -9
- data/fastlane/lib/fastlane/lane_manager.rb +1 -1
- data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +1 -1
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +5 -1
- data/fastlane/lib/fastlane/setup/setup_ios.rb +1 -1
- data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +1 -1
- data/fastlane/lib/fastlane/swift_lane_manager.rb +11 -3
- data/fastlane/lib/fastlane/swift_runner_upgrader.rb +54 -1
- data/fastlane/lib/fastlane/tools.rb +16 -0
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Actions.swift +1 -1
- data/fastlane/swift/Appfile.swift +2 -2
- data/fastlane/swift/ArgumentProcessor.swift +1 -1
- data/fastlane/swift/Atomic.swift +150 -0
- data/fastlane/swift/ControlCommand.swift +1 -1
- data/fastlane/swift/Deliverfile.swift +2 -2
- data/fastlane/swift/DeliverfileProtocol.swift +8 -4
- data/fastlane/swift/Fastlane.swift +363 -184
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +30 -20
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +1 -1
- data/fastlane/swift/Gymfile.swift +2 -2
- data/fastlane/swift/GymfileProtocol.swift +7 -3
- data/fastlane/swift/LaneFileProtocol.swift +2 -2
- data/fastlane/swift/MainProcess.swift +3 -3
- data/fastlane/swift/Matchfile.swift +2 -2
- data/fastlane/swift/MatchfileProtocol.swift +21 -5
- data/fastlane/swift/OptionalConfigValue.swift +1 -1
- data/fastlane/swift/Plugins.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +2 -2
- data/fastlane/swift/PrecheckfileProtocol.swift +3 -3
- data/fastlane/swift/RubyCommand.swift +1 -1
- data/fastlane/swift/RubyCommandable.swift +1 -1
- data/fastlane/swift/Runner.swift +10 -2
- data/fastlane/swift/RunnerArgument.swift +1 -1
- data/fastlane/swift/Scanfile.swift +2 -2
- data/fastlane/swift/ScanfileProtocol.swift +11 -3
- data/fastlane/swift/Screengrabfile.swift +2 -2
- data/fastlane/swift/ScreengrabfileProtocol.swift +3 -3
- data/fastlane/swift/Snapshotfile.swift +2 -2
- data/fastlane/swift/SnapshotfileProtocol.swift +4 -4
- data/fastlane/swift/SocketClient.swift +9 -5
- data/fastlane/swift/SocketClientDelegateProtocol.swift +2 -2
- data/fastlane/swift/SocketResponse.swift +1 -1
- data/fastlane/swift/formatting/Brewfile.lock.json +42 -24
- data/fastlane/swift/main.swift +1 -1
- data/fastlane/swift/upgrade_manifest.json +1 -1
- data/fastlane_core/README.md +1 -0
- data/fastlane_core/lib/fastlane_core/cert_checker.rb +79 -17
- data/fastlane_core/lib/fastlane_core/device_manager.rb +5 -1
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +335 -20
- data/fastlane_core/lib/fastlane_core/keychain_importer.rb +1 -0
- data/fastlane_core/lib/fastlane_core/project.rb +19 -2
- data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +4 -2
- data/frameit/lib/frameit/device.rb +1 -1
- data/frameit/lib/frameit/device_types.rb +9 -0
- data/frameit/lib/frameit/frame_downloader.rb +1 -1
- data/gym/lib/gym/generators/build_command_generator.rb +1 -0
- data/gym/lib/gym/options.rb +7 -0
- data/match/lib/match/change_password.rb +2 -0
- data/match/lib/match/commands_generator.rb +2 -1
- data/match/lib/match/encryption/openssl.rb +1 -1
- data/match/lib/match/encryption.rb +3 -0
- data/match/lib/match/generator.rb +1 -0
- data/match/lib/match/importer.rb +10 -1
- data/match/lib/match/migrate.rb +4 -3
- data/match/lib/match/module.rb +54 -2
- data/match/lib/match/nuke.rb +36 -47
- data/match/lib/match/options.rb +22 -1
- data/match/lib/match/runner.rb +25 -6
- data/match/lib/match/setup.rb +1 -1
- data/match/lib/match/spaceship_ensure.rb +4 -2
- data/match/lib/match/storage/gitlab/client.rb +102 -0
- data/match/lib/match/storage/gitlab/secure_file.rb +65 -0
- data/match/lib/match/storage/gitlab_secure_files.rb +182 -0
- data/match/lib/match/storage/google_cloud_storage.rb +7 -6
- data/match/lib/match/storage/s3_storage.rb +3 -3
- data/match/lib/match/storage.rb +4 -0
- data/match/lib/match/table_printer.rb +2 -1
- data/match/lib/match/utils.rb +15 -2
- data/pem/lib/pem/manager.rb +1 -1
- data/pilot/lib/pilot/build_manager.rb +33 -13
- data/pilot/lib/pilot/options.rb +6 -1
- data/scan/lib/scan/detect_values.rb +6 -0
- data/scan/lib/scan/options.rb +16 -1
- data/scan/lib/scan/runner.rb +33 -14
- data/scan/lib/scan/test_command_generator.rb +7 -1
- data/sigh/lib/sigh/download_all.rb +14 -2
- data/sigh/lib/sigh/module.rb +3 -1
- data/sigh/lib/sigh/options.rb +5 -0
- data/sigh/lib/sigh/runner.rb +12 -2
- data/snapshot/lib/assets/SnapshotHelper.swift +3 -3
- data/snapshot/lib/snapshot/options.rb +1 -1
- data/snapshot/lib/snapshot/reports_generator.rb +1 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +9 -2
- data/spaceship/lib/spaceship/client.rb +36 -25
- data/spaceship/lib/spaceship/connect_api/api_client.rb +10 -5
- data/spaceship/lib/spaceship/connect_api/models/actor.rb +26 -0
- data/spaceship/lib/spaceship/connect_api/models/app.rb +7 -5
- data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +27 -10
- data/spaceship/lib/spaceship/connect_api/models/build_bundle.rb +9 -0
- data/spaceship/lib/spaceship/connect_api/models/build_bundle_file_sizes.rb +34 -0
- data/spaceship/lib/spaceship/connect_api/models/build_delivery.rb +2 -1
- data/spaceship/lib/spaceship/connect_api/models/certificate.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/device.rb +47 -4
- data/spaceship/lib/spaceship/connect_api/models/profile.rb +4 -0
- data/spaceship/lib/spaceship/connect_api/models/resolution_center_message.rb +29 -0
- data/spaceship/lib/spaceship/connect_api/models/resolution_center_thread.rb +67 -0
- data/spaceship/lib/spaceship/connect_api/models/review_rejection.rb +19 -0
- data/spaceship/lib/spaceship/connect_api/models/review_submission.rb +13 -0
- data/spaceship/lib/spaceship/connect_api/models/user.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +19 -0
- data/spaceship/lib/spaceship/connect_api/response.rb +10 -6
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +33 -2
- data/spaceship/lib/spaceship/connect_api/token.rb +5 -2
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +41 -8
- data/spaceship/lib/spaceship/connect_api.rb +6 -0
- data/spaceship/lib/spaceship/errors.rb +34 -0
- data/spaceship/lib/spaceship/hashcash.rb +52 -0
- data/spaceship/lib/spaceship/portal/certificate.rb +4 -3
- data/spaceship/lib/spaceship/tunes/app_ratings.rb +6 -6
- data/spaceship/lib/spaceship/tunes/iap_families.rb +1 -1
- data/spaceship/lib/spaceship/tunes/tunes.rb +0 -1
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +79 -21
- data/spaceship/lib/spaceship/two_step_or_factor_client.rb +11 -3
- data/spaceship/lib/spaceship.rb +1 -0
- data/supply/lib/supply/client.rb +2 -7
- data/trainer/lib/assets/junit.xml.erb +9 -1
- data/trainer/lib/trainer/junit_generator.rb +2 -2
- data/trainer/lib/trainer/options.rb +1 -1
- data/trainer/lib/trainer/test_parser.rb +25 -3
- metadata +36 -33
- data/deliver/lib/deliver/.runner.rb.swp +0 -0
- data/deliver/lib/deliver/.submit_for_review.rb.swp +0 -0
- data/fastlane/lib/.DS_Store +0 -0
- data/fastlane/lib/fastlane/.DS_Store +0 -0
- data/fastlane/lib/fastlane/actions/.DS_Store +0 -0
- data/spaceship/lib/spaceship/connect_api/models/.app.rb.swp +0 -0
- data/spaceship/lib/spaceship/connect_api/testflight/.testflight.rb.swp +0 -0
- data/spaceship/lib/spaceship/tunes/user_detail.rb +0 -15
- data/trainer/lib/.DS_Store +0 -0
@@ -9,7 +9,7 @@ require_relative 'errors'
|
|
9
9
|
require_relative 'iap_subscription_pricing_tier'
|
10
10
|
require_relative 'pricing_tier'
|
11
11
|
require_relative 'territory'
|
12
|
-
require_relative '
|
12
|
+
require_relative '../connect_api/response'
|
13
13
|
module Spaceship
|
14
14
|
# rubocop:disable Metrics/ClassLength
|
15
15
|
class TunesClient < Spaceship::Client
|
@@ -72,13 +72,13 @@ module Spaceship
|
|
72
72
|
puts("Looking for App Store Connect Team with name #{t_name}") if Spaceship::Globals.verbose?
|
73
73
|
|
74
74
|
teams.each do |t|
|
75
|
-
t_id = t['
|
75
|
+
t_id = t['providerId'].to_s if t['name'].casecmp(t_name).zero?
|
76
76
|
end
|
77
77
|
|
78
78
|
puts("Could not find team with name '#{t_name}', trying to fallback to default team") if t_id.length.zero?
|
79
79
|
end
|
80
80
|
|
81
|
-
t_id = teams.first['
|
81
|
+
t_id = teams.first['providerId'].to_s if teams.count == 1
|
82
82
|
|
83
83
|
if t_id.length > 0
|
84
84
|
puts("Looking for App Store Connect Team with ID #{t_id}") if Spaceship::Globals.verbose?
|
@@ -92,11 +92,11 @@ module Spaceship
|
|
92
92
|
loop do
|
93
93
|
puts("Multiple #{'App Store Connect teams'.yellow} found, please enter the number of the team you want to use: ")
|
94
94
|
if ENV["FASTLANE_HIDE_TEAM_INFORMATION"].to_s.length == 0
|
95
|
+
first_team = teams.first
|
95
96
|
puts("Note: to automatically choose the team, provide either the App Store Connect Team ID, or the Team Name in your fastlane/Appfile:")
|
96
97
|
puts("Alternatively you can pass the team name or team ID using the `FASTLANE_ITC_TEAM_ID` or `FASTLANE_ITC_TEAM_NAME` environment variable")
|
97
|
-
first_team = teams.first["contentProvider"]
|
98
98
|
puts("")
|
99
|
-
puts(" itc_team_id \"#{first_team['
|
99
|
+
puts(" itc_team_id \"#{first_team['providerId']}\"")
|
100
100
|
puts("")
|
101
101
|
puts("or")
|
102
102
|
puts("")
|
@@ -106,7 +106,7 @@ module Spaceship
|
|
106
106
|
|
107
107
|
# We're not using highline here, as spaceship doesn't have a dependency to fastlane_core or highline
|
108
108
|
teams.each_with_index do |team, i|
|
109
|
-
puts("#{i + 1}) \"#{team['
|
109
|
+
puts("#{i + 1}) \"#{team['name']}\" (#{team['providerId']})")
|
110
110
|
end
|
111
111
|
|
112
112
|
unless Spaceship::Client::UserInterface.interactive?
|
@@ -119,7 +119,7 @@ module Spaceship
|
|
119
119
|
team_to_use = teams[selected] if selected >= 0
|
120
120
|
|
121
121
|
if team_to_use
|
122
|
-
self.team_id = team_to_use['
|
122
|
+
self.team_id = team_to_use['providerId'].to_s # actually set the team id here
|
123
123
|
return self.team_id
|
124
124
|
end
|
125
125
|
end
|
@@ -255,8 +255,68 @@ module Spaceship
|
|
255
255
|
#####################################################
|
256
256
|
|
257
257
|
def applications
|
258
|
-
|
259
|
-
|
258
|
+
# Doing this real bad puts for now until a more formal deprecation logic can get made
|
259
|
+
puts("Spaceship::Tunes::Application.all is deprecated")
|
260
|
+
puts(" It's using a temporary patch to keep it from raising an error but things may not work correctly")
|
261
|
+
puts(" Please consider switching to Spaceship::ConnectAPI if you can")
|
262
|
+
puts(" For more details - https://github.com/fastlane/fastlane/pull/20480")
|
263
|
+
|
264
|
+
# This legacy endpoint went offline around July 7th, 2022. This is a rough attempt
|
265
|
+
# at retrofitting using the newer App Store Connect API endpoints
|
266
|
+
#
|
267
|
+
# This could all be done easily with Spaceship::ConnectAPI::App.find but there were a lot of
|
268
|
+
# circular dependency issues that were very difficult to solve because. Spaceship::Tunes would be
|
269
|
+
# using Spaceship::ConnectAPI which uses Spaceship::Tunes
|
270
|
+
#
|
271
|
+
# However, using Spaceship::ConnectAPI::Response works. This will fetch multiple pages of app
|
272
|
+
# if it needs to
|
273
|
+
#
|
274
|
+
# https://github.com/fastlane/fastlane/pull/20480
|
275
|
+
r = request(:get, "https://appstoreconnect.apple.com/iris/v1/apps?include=appStoreVersions,prices")
|
276
|
+
response = Spaceship::ConnectAPI::Response.new(
|
277
|
+
body: r.body,
|
278
|
+
status: r.status,
|
279
|
+
headers: r.headers,
|
280
|
+
client: nil
|
281
|
+
)
|
282
|
+
|
283
|
+
apps = response.all_pages do |url|
|
284
|
+
r = request(:get, url)
|
285
|
+
Spaceship::ConnectAPI::Response.new(
|
286
|
+
body: r.body,
|
287
|
+
status: r.status,
|
288
|
+
headers: r.headers,
|
289
|
+
client: nil
|
290
|
+
)
|
291
|
+
end.flat_map(&:to_models)
|
292
|
+
|
293
|
+
apps.map do |asc_app|
|
294
|
+
platforms = (asc_app.app_store_versions || []).map(&:platform).uniq.map do |asc_platform|
|
295
|
+
case asc_platform
|
296
|
+
when "TV_OS"
|
297
|
+
"appletvos"
|
298
|
+
when "MAC_OS"
|
299
|
+
"osx"
|
300
|
+
when "IOS"
|
301
|
+
"ios"
|
302
|
+
else
|
303
|
+
raise "Cannot find a matching platform for '#{asc_platform}'}"
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
307
|
+
{
|
308
|
+
'adamId' => asc_app.id,
|
309
|
+
'name' => asc_app.name,
|
310
|
+
'vendorId' => "",
|
311
|
+
'bundleId' => asc_app.bundle_id,
|
312
|
+
'lastModifiedDate' => nil,
|
313
|
+
'issuesCount' => nil,
|
314
|
+
'iconUrl' => nil,
|
315
|
+
'versionSets' => platforms.map do |platform|
|
316
|
+
{ 'type' => 'app', 'platformString' => platform }
|
317
|
+
end
|
318
|
+
}
|
319
|
+
end
|
260
320
|
end
|
261
321
|
|
262
322
|
def app_details(app_id)
|
@@ -950,13 +1010,6 @@ module Spaceship
|
|
950
1010
|
Spaceship::Tunes::AppVersionRef.factory(data)
|
951
1011
|
end
|
952
1012
|
|
953
|
-
# Fetches the User Detail information from ITC. This gets called often and almost never changes
|
954
|
-
# so we cache it
|
955
|
-
# @return [UserDetail] the response
|
956
|
-
def user_detail_data
|
957
|
-
@_cached_user_detail_data ||= Spaceship::Tunes::UserDetail.factory(user_details_data, self)
|
958
|
-
end
|
959
|
-
|
960
1013
|
#####################################################
|
961
1014
|
# @!group CandiateBuilds
|
962
1015
|
#####################################################
|
@@ -992,7 +1045,7 @@ module Spaceship
|
|
992
1045
|
tries -= 1
|
993
1046
|
if tries > 0
|
994
1047
|
logger.warn("Received temporary server error from App Store Connect. Retrying the request...")
|
995
|
-
sleep(3) unless Object.const_defined?(
|
1048
|
+
sleep(3) unless Object.const_defined?(:SpecHelper)
|
996
1049
|
retry
|
997
1050
|
end
|
998
1051
|
end
|
@@ -1560,7 +1613,7 @@ module Spaceship
|
|
1560
1613
|
msg = "App Store Connect temporary error received: '#{ex.message}'. Retrying after #{seconds_to_sleep} seconds (remaining: #{tries})..."
|
1561
1614
|
puts(msg)
|
1562
1615
|
logger.warn(msg)
|
1563
|
-
sleep(seconds_to_sleep) unless Object.const_defined?(
|
1616
|
+
sleep(seconds_to_sleep) unless Object.const_defined?(:SpecHelper)
|
1564
1617
|
retry
|
1565
1618
|
end
|
1566
1619
|
raise ex # re-raise the exception
|
@@ -1570,7 +1623,7 @@ module Spaceship
|
|
1570
1623
|
msg = "Potential server error received: '#{ex.message}'. Retrying after 10 seconds (remaining: #{potential_server_error_tries})..."
|
1571
1624
|
puts(msg)
|
1572
1625
|
logger.warn(msg)
|
1573
|
-
sleep(seconds_to_sleep) unless Object.const_defined?(
|
1626
|
+
sleep(seconds_to_sleep) unless Object.const_defined?(:SpecHelper)
|
1574
1627
|
retry
|
1575
1628
|
end
|
1576
1629
|
raise ex
|
@@ -1582,9 +1635,14 @@ module Spaceship
|
|
1582
1635
|
@sso_token_for_video = nil
|
1583
1636
|
end
|
1584
1637
|
|
1585
|
-
# the
|
1638
|
+
# the contentProviderId found in the user details data
|
1586
1639
|
def content_provider_id
|
1587
|
-
@content_provider_id
|
1640
|
+
return @content_provider_id if @content_provider_id
|
1641
|
+
|
1642
|
+
provider = user_details_data["provider"]["providerId"]
|
1643
|
+
@content_provider_id ||= provider.to_s if provider
|
1644
|
+
|
1645
|
+
return @content_provider_id
|
1588
1646
|
end
|
1589
1647
|
|
1590
1648
|
# the ssoTokenForImage found in the AppVersionRef instance
|
@@ -61,9 +61,17 @@ module Spaceship
|
|
61
61
|
|
62
62
|
# Send token to server to get a valid session
|
63
63
|
r = request(:post) do |req|
|
64
|
-
req.url("https://idmsa.apple.com/appleauth/auth/verify/
|
64
|
+
req.url("https://idmsa.apple.com/appleauth/auth/verify/phone/securitycode")
|
65
65
|
req.headers['Content-Type'] = 'application/json'
|
66
|
-
req.body = {
|
66
|
+
req.body = {
|
67
|
+
"phoneNumber": {
|
68
|
+
"id": device_id
|
69
|
+
},
|
70
|
+
"securityCode": {
|
71
|
+
"code" => code.to_s
|
72
|
+
},
|
73
|
+
"mode": "sms"
|
74
|
+
}.to_json
|
67
75
|
update_request_headers(req)
|
68
76
|
end
|
69
77
|
|
@@ -164,7 +172,7 @@ module Spaceship
|
|
164
172
|
body = { "securityCode" => { "code" => code.to_s } }.to_json
|
165
173
|
|
166
174
|
# User exited by entering `sms` and wants to choose phone number for SMS
|
167
|
-
if code
|
175
|
+
if code.casecmp?("sms")
|
168
176
|
code_type = 'phone'
|
169
177
|
body = request_two_factor_code_from_phone_choose(response.body["trustedPhoneNumbers"], code_length)
|
170
178
|
end
|
data/spaceship/lib/spaceship.rb
CHANGED
data/supply/lib/supply/client.rb
CHANGED
@@ -266,14 +266,9 @@ module Supply
|
|
266
266
|
filtered_tracks = tracks.select { |t| !t.releases.nil? && t.releases.any? { |r| r.name == version } }
|
267
267
|
|
268
268
|
if filtered_tracks.length > 1
|
269
|
-
#
|
269
|
+
# Prefer tracks in production, beta, alpha, internal order
|
270
270
|
# E.g.: A release might've been promoted from Alpha/Beta track. This means the release will be present in two or more tracks
|
271
|
-
|
272
|
-
filtered_tracks = filtered_tracks.select { |t| t.track == Supply::Tracks::DEFAULT }
|
273
|
-
else
|
274
|
-
# E.g.: A release might be in both Alpha & Beta (not sure if this is possible, just catching if it ever happens), giving Beta precedence.
|
275
|
-
filtered_tracks = filtered_tracks.select { |t| t.track == Supply::Tracks::BETA }
|
276
|
-
end
|
271
|
+
filtered_tracks = filtered_tracks.sort_by { |t| Supply::Tracks::DEFAULTS.index(t.track) || Float::INFINITY }
|
277
272
|
end
|
278
273
|
|
279
274
|
filtered_track = filtered_tracks.first
|
@@ -6,13 +6,21 @@
|
|
6
6
|
|
7
7
|
<testsuites tests="<%= number_of_tests %>" failures="<%= number_of_failures %>">
|
8
8
|
<% @results.each do |testsuite| %>
|
9
|
-
<testsuite name=<%= (testsuite[:target_name].nil? ? testsuite[:test_name] : testsuite[:target_name]).encode(:xml => :attr) %> tests="<%= testsuite[:number_of_tests_excluding_retries] %>" failures="<%= testsuite[:number_of_failures_excluding_retries] %>" time="<%= testsuite[:duration] %>">
|
9
|
+
<testsuite name=<%= (testsuite[:target_name].nil? ? testsuite[:test_name] : testsuite[:target_name]).encode(:xml => :attr) %> tests="<%= testsuite[:number_of_tests_excluding_retries] %>" failures="<%= testsuite[:number_of_failures_excluding_retries] %>" <% if testsuite[:number_of_skipped] %>skipped="<%= testsuite[:number_of_skipped] %>" <% end %>time="<%= testsuite[:duration] %>">
|
10
|
+
<% unless testsuite[:configuration_name].nil? %>
|
11
|
+
<properties>
|
12
|
+
<property name="Configuration" value="<%= testsuite[:configuration_name] %>"/>
|
13
|
+
</properties>
|
14
|
+
<% end %>
|
10
15
|
<% testsuite[:tests].each do |test| %>
|
11
16
|
<testcase classname=<%= test[:test_group].encode(:xml => :attr) %> name=<%= test[:name].encode(:xml => :attr) %> time="<%= test[:duration] %>">
|
12
17
|
<% (test[:failures] || []).each do |failure| %>
|
13
18
|
<failure message=<%= failure[:failure_message].encode(:xml => :attr) %>>
|
14
19
|
</failure>
|
15
20
|
<% end %>
|
21
|
+
<% if test[:skipped] %>
|
22
|
+
<skipped/>
|
23
|
+
<% end %>
|
16
24
|
</testcase>
|
17
25
|
<% end %>
|
18
26
|
</testsuite>
|
@@ -15,11 +15,11 @@ module Trainer
|
|
15
15
|
|
16
16
|
lib_path = Trainer::ROOT
|
17
17
|
xml_path = File.join(lib_path, "lib/assets/junit.xml.erb")
|
18
|
-
xml = ERB.new(File.read(xml_path),
|
18
|
+
xml = ERB.new(File.read(xml_path), trim_mode: '<>').result(binding) # http://www.rrn.dk/rubys-erb-templating-system
|
19
19
|
|
20
20
|
xml = xml.gsub('system_', 'system-').delete("\e") # Jenkins can not parse 'ESC' symbol
|
21
21
|
|
22
|
-
# We have to
|
22
|
+
# We have to manually clear empty lines
|
23
23
|
# They may contain white spaces
|
24
24
|
clean_xml = []
|
25
25
|
xml.each_line do |row|
|
@@ -32,7 +32,7 @@ module Trainer
|
|
32
32
|
env_name: "TRAINER_OUTPUT_DIRECTORY",
|
33
33
|
default_value: nil,
|
34
34
|
optional: true,
|
35
|
-
description: "
|
35
|
+
description: "Directory in which the xml files should be written to. Same directory as source by default"),
|
36
36
|
FastlaneCore::ConfigItem.new(key: :output_filename,
|
37
37
|
short_option: "-f",
|
38
38
|
env_name: "TRAINER_OUTPUT_FILENAME",
|
@@ -19,6 +19,7 @@ module Trainer
|
|
19
19
|
attr_accessor :number_of_tests_excluding_retries
|
20
20
|
attr_accessor :number_of_failures_excluding_retries
|
21
21
|
attr_accessor :number_of_retries
|
22
|
+
attr_accessor :number_of_skipped
|
22
23
|
|
23
24
|
# Returns a hash with the path being the key, and the value
|
24
25
|
# defining if the tests were successful
|
@@ -89,7 +90,8 @@ module Trainer
|
|
89
90
|
number_of_failures: tp.number_of_failures,
|
90
91
|
number_of_tests_excluding_retries: tp.number_of_tests_excluding_retries,
|
91
92
|
number_of_failures_excluding_retries: tp.number_of_failures_excluding_retries,
|
92
|
-
number_of_retries: tp.number_of_retries
|
93
|
+
number_of_retries: tp.number_of_retries,
|
94
|
+
number_of_skipped: tp.number_of_skipped
|
93
95
|
}
|
94
96
|
end
|
95
97
|
return_hash
|
@@ -116,12 +118,14 @@ module Trainer
|
|
116
118
|
self.number_of_tests_excluding_retries = 0
|
117
119
|
self.number_of_failures_excluding_retries = 0
|
118
120
|
self.number_of_retries = 0
|
121
|
+
self.number_of_skipped = 0
|
119
122
|
self.data.each do |thing|
|
120
123
|
self.number_of_tests += thing[:number_of_tests].to_i
|
121
124
|
self.number_of_failures += thing[:number_of_failures].to_i
|
122
125
|
self.number_of_tests_excluding_retries += thing[:number_of_tests_excluding_retries].to_i
|
123
126
|
self.number_of_failures_excluding_retries += thing[:number_of_failures_excluding_retries].to_i
|
124
127
|
self.number_of_retries += thing[:number_of_retries].to_i
|
128
|
+
self.number_of_skipped += thing[:number_of_skipped].to_i
|
125
129
|
end
|
126
130
|
end
|
127
131
|
|
@@ -132,7 +136,7 @@ module Trainer
|
|
132
136
|
|
133
137
|
# @return [Bool] were all tests successful? Is false if at least one test failed
|
134
138
|
def tests_successful?
|
135
|
-
self.data.collect { |a| a[:
|
139
|
+
self.data.collect { |a| a[:number_of_failures_excluding_retries] }.all?(&:zero?)
|
136
140
|
end
|
137
141
|
|
138
142
|
private
|
@@ -226,6 +230,8 @@ module Trainer
|
|
226
230
|
all_summaries = summaries.map(&:summaries).flatten
|
227
231
|
testable_summaries = all_summaries.map(&:testable_summaries).flatten
|
228
232
|
|
233
|
+
summaries_to_names = test_summaries_to_configuration_names(all_summaries)
|
234
|
+
|
229
235
|
# Maps ActionTestableSummary to rows for junit generator
|
230
236
|
rows = testable_summaries.map do |testable_summary|
|
231
237
|
all_tests = testable_summary.all_tests.flatten
|
@@ -250,6 +256,7 @@ module Trainer
|
|
250
256
|
|
251
257
|
info = tests_by_identifier[identifier] || {}
|
252
258
|
info[:failure_count] ||= 0
|
259
|
+
info[:skip_count] ||= 0
|
253
260
|
info[:success_count] ||= 0
|
254
261
|
|
255
262
|
retry_count = info[:retry_count]
|
@@ -272,6 +279,9 @@ module Trainer
|
|
272
279
|
}]
|
273
280
|
|
274
281
|
info[:failure_count] += 1
|
282
|
+
elsif test.test_status == "Skipped"
|
283
|
+
test_row[:skipped] = true
|
284
|
+
info[:skip_count] += 1
|
275
285
|
else
|
276
286
|
info[:success_count] = 1
|
277
287
|
end
|
@@ -309,6 +319,7 @@ module Trainer
|
|
309
319
|
project_path: testable_summary.project_relative_path,
|
310
320
|
target_name: testable_summary.target_name,
|
311
321
|
test_name: testable_summary.name,
|
322
|
+
configuration_name: summaries_to_names[testable_summary],
|
312
323
|
duration: all_tests.map(&:duration).inject(:+),
|
313
324
|
tests: test_rows
|
314
325
|
}
|
@@ -319,7 +330,8 @@ module Trainer
|
|
319
330
|
# Used for seeing if any tests continued to fail after all of the Xcode 13 (and up) retries have finished
|
320
331
|
unique_tests = tests_by_identifier.values || []
|
321
332
|
row[:number_of_tests_excluding_retries] = unique_tests.count
|
322
|
-
row[:
|
333
|
+
row[:number_of_skipped] = unique_tests.map { |a| a[:skip_count] }.inject(:+)
|
334
|
+
row[:number_of_failures_excluding_retries] = unique_tests.find_all { |a| (a[:success_count] + a[:skip_count]) == 0 }.count
|
323
335
|
row[:number_of_retries] = unique_tests.map { |a| a[:retry_count] }.inject(:+)
|
324
336
|
|
325
337
|
row
|
@@ -328,6 +340,16 @@ module Trainer
|
|
328
340
|
self.data = rows
|
329
341
|
end
|
330
342
|
|
343
|
+
def test_summaries_to_configuration_names(test_summaries)
|
344
|
+
summary_to_name = {}
|
345
|
+
test_summaries.each do |summary|
|
346
|
+
summary.testable_summaries.each do |testable_summary|
|
347
|
+
summary_to_name[testable_summary] = summary.name
|
348
|
+
end
|
349
|
+
end
|
350
|
+
summary_to_name
|
351
|
+
end
|
352
|
+
|
331
353
|
# Convert the Hashes and Arrays in something more useful
|
332
354
|
def parse_content(xcpretty_naming)
|
333
355
|
self.data = self.raw_json["TestableSummaries"].collect do |testable_summary|
|
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.
|
4
|
+
version: 2.212.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
- Jérôme Lacoste
|
9
|
-
- Aaron Brager
|
10
|
-
- Danielle Tomlinson
|
11
|
-
- Iulian Onofrei
|
12
|
-
- Jimmy Dee
|
13
|
-
- Matthew Ellis
|
7
|
+
- Roger Oba
|
14
8
|
- Manish Rathi
|
15
|
-
- Felix Krause
|
16
|
-
- Satoshi Namai
|
17
9
|
- Helmut Januschka
|
18
|
-
- Max Ott
|
19
|
-
- Andrew McBurney
|
20
|
-
- Jan Piotrowski
|
21
|
-
- Kohki Miki
|
22
|
-
- Josh Holtz
|
23
10
|
- Stefan Natchev
|
24
|
-
- Roger Oba
|
25
|
-
- Jorge Revuelta H
|
26
|
-
- Olivier Halligon
|
27
|
-
- Maksym Grebenets
|
28
11
|
- Joshua Liebowitz
|
29
|
-
-
|
12
|
+
- Kohki Miki
|
13
|
+
- Jimmy Dee
|
14
|
+
- Jorge Revuelta H
|
15
|
+
- Andrew McBurney
|
16
|
+
- Satoshi Namai
|
17
|
+
- Josh Holtz
|
18
|
+
- Fumiya Nakamura
|
19
|
+
- Danielle Tomlinson
|
30
20
|
- Łukasz Grabowski
|
21
|
+
- Luka Mirosevic
|
22
|
+
- Felix Krause
|
23
|
+
- Jérôme Lacoste
|
24
|
+
- Max Ott
|
25
|
+
- Manu Wallner
|
26
|
+
- Aaron Brager
|
27
|
+
- Maksym Grebenets
|
31
28
|
- Daniel Jankowski
|
32
|
-
-
|
29
|
+
- Olivier Halligon
|
30
|
+
- Iulian Onofrei
|
31
|
+
- Matthew Ellis
|
32
|
+
- Jan Piotrowski
|
33
33
|
autorequire:
|
34
34
|
bindir: bin
|
35
35
|
cert_chain: []
|
36
|
-
date:
|
36
|
+
date: 2023-02-24 00:00:00.000000000 Z
|
37
37
|
dependencies:
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: xcodeproj
|
@@ -973,8 +973,6 @@ files:
|
|
973
973
|
- deliver/lib/assets/ScreenshotsHelp
|
974
974
|
- deliver/lib/assets/summary.html.erb
|
975
975
|
- deliver/lib/deliver.rb
|
976
|
-
- deliver/lib/deliver/.runner.rb.swp
|
977
|
-
- deliver/lib/deliver/.submit_for_review.rb.swp
|
978
976
|
- deliver/lib/deliver/app_screenshot.rb
|
979
977
|
- deliver/lib/deliver/app_screenshot_iterator.rb
|
980
978
|
- deliver/lib/deliver/app_screenshot_validator.rb
|
@@ -996,7 +994,6 @@ files:
|
|
996
994
|
- deliver/lib/deliver/upload_price_tier.rb
|
997
995
|
- deliver/lib/deliver/upload_screenshots.rb
|
998
996
|
- fastlane/README.md
|
999
|
-
- fastlane/lib/.DS_Store
|
1000
997
|
- fastlane/lib/assets/ActionDetails.md.erb
|
1001
998
|
- fastlane/lib/assets/Actions.md.erb
|
1002
999
|
- fastlane/lib/assets/AppfileTemplate
|
@@ -1015,10 +1012,8 @@ files:
|
|
1015
1012
|
- fastlane/lib/assets/s3_plist_template.erb
|
1016
1013
|
- fastlane/lib/assets/s3_version_template.erb
|
1017
1014
|
- fastlane/lib/fastlane.rb
|
1018
|
-
- fastlane/lib/fastlane/.DS_Store
|
1019
1015
|
- fastlane/lib/fastlane/action.rb
|
1020
1016
|
- fastlane/lib/fastlane/action_collector.rb
|
1021
|
-
- fastlane/lib/fastlane/actions/.DS_Store
|
1022
1017
|
- fastlane/lib/fastlane/actions/README.md
|
1023
1018
|
- fastlane/lib/fastlane/actions/actions_helper.rb
|
1024
1019
|
- fastlane/lib/fastlane/actions/adb.rb
|
@@ -1263,6 +1258,7 @@ files:
|
|
1263
1258
|
- fastlane/lib/fastlane/actions/xcode_select.rb
|
1264
1259
|
- fastlane/lib/fastlane/actions/xcode_server_get_assets.rb
|
1265
1260
|
- fastlane/lib/fastlane/actions/xcodebuild.rb
|
1261
|
+
- fastlane/lib/fastlane/actions/xcodes.rb
|
1266
1262
|
- fastlane/lib/fastlane/actions/xcov.rb
|
1267
1263
|
- fastlane/lib/fastlane/actions/xctool.rb
|
1268
1264
|
- fastlane/lib/fastlane/actions/xcversion.rb
|
@@ -1294,6 +1290,7 @@ files:
|
|
1294
1290
|
- fastlane/lib/fastlane/helper/sh_helper.rb
|
1295
1291
|
- fastlane/lib/fastlane/helper/xcodebuild_formatter_helper.rb
|
1296
1292
|
- fastlane/lib/fastlane/helper/xcodeproj_helper.rb
|
1293
|
+
- fastlane/lib/fastlane/helper/xcodes_helper.rb
|
1297
1294
|
- fastlane/lib/fastlane/helper/xcversion_helper.rb
|
1298
1295
|
- fastlane/lib/fastlane/junit_generator.rb
|
1299
1296
|
- fastlane/lib/fastlane/lane.rb
|
@@ -1356,6 +1353,7 @@ files:
|
|
1356
1353
|
- fastlane/swift/Actions.swift
|
1357
1354
|
- fastlane/swift/Appfile.swift
|
1358
1355
|
- fastlane/swift/ArgumentProcessor.swift
|
1356
|
+
- fastlane/swift/Atomic.swift
|
1359
1357
|
- fastlane/swift/ControlCommand.swift
|
1360
1358
|
- fastlane/swift/Deliverfile.swift
|
1361
1359
|
- fastlane/swift/DeliverfileProtocol.swift
|
@@ -1516,6 +1514,9 @@ files:
|
|
1516
1514
|
- match/lib/match/spaceship_ensure.rb
|
1517
1515
|
- match/lib/match/storage.rb
|
1518
1516
|
- match/lib/match/storage/git_storage.rb
|
1517
|
+
- match/lib/match/storage/gitlab/client.rb
|
1518
|
+
- match/lib/match/storage/gitlab/secure_file.rb
|
1519
|
+
- match/lib/match/storage/gitlab_secure_files.rb
|
1519
1520
|
- match/lib/match/storage/google_cloud_storage.rb
|
1520
1521
|
- match/lib/match/storage/interface.rb
|
1521
1522
|
- match/lib/match/storage/s3_storage.rb
|
@@ -1662,7 +1663,7 @@ files:
|
|
1662
1663
|
- spaceship/lib/spaceship/connect_api/client.rb
|
1663
1664
|
- spaceship/lib/spaceship/connect_api/file_uploader.rb
|
1664
1665
|
- spaceship/lib/spaceship/connect_api/model.rb
|
1665
|
-
- spaceship/lib/spaceship/connect_api/models
|
1666
|
+
- spaceship/lib/spaceship/connect_api/models/actor.rb
|
1666
1667
|
- spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb
|
1667
1668
|
- spaceship/lib/spaceship/connect_api/models/app.rb
|
1668
1669
|
- spaceship/lib/spaceship/connect_api/models/app_category.rb
|
@@ -1701,6 +1702,7 @@ files:
|
|
1701
1702
|
- spaceship/lib/spaceship/connect_api/models/build.rb
|
1702
1703
|
- spaceship/lib/spaceship/connect_api/models/build_beta_detail.rb
|
1703
1704
|
- spaceship/lib/spaceship/connect_api/models/build_bundle.rb
|
1705
|
+
- spaceship/lib/spaceship/connect_api/models/build_bundle_file_sizes.rb
|
1704
1706
|
- spaceship/lib/spaceship/connect_api/models/build_delivery.rb
|
1705
1707
|
- spaceship/lib/spaceship/connect_api/models/bundle_id.rb
|
1706
1708
|
- spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb
|
@@ -1713,6 +1715,9 @@ files:
|
|
1713
1715
|
- spaceship/lib/spaceship/connect_api/models/pre_release_version.rb
|
1714
1716
|
- spaceship/lib/spaceship/connect_api/models/profile.rb
|
1715
1717
|
- spaceship/lib/spaceship/connect_api/models/reset_ratings_request.rb
|
1718
|
+
- spaceship/lib/spaceship/connect_api/models/resolution_center_message.rb
|
1719
|
+
- spaceship/lib/spaceship/connect_api/models/resolution_center_thread.rb
|
1720
|
+
- spaceship/lib/spaceship/connect_api/models/review_rejection.rb
|
1716
1721
|
- spaceship/lib/spaceship/connect_api/models/review_submission.rb
|
1717
1722
|
- spaceship/lib/spaceship/connect_api/models/review_submission_item.rb
|
1718
1723
|
- spaceship/lib/spaceship/connect_api/models/sandbox_tester.rb
|
@@ -1723,7 +1728,6 @@ files:
|
|
1723
1728
|
- spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb
|
1724
1729
|
- spaceship/lib/spaceship/connect_api/response.rb
|
1725
1730
|
- spaceship/lib/spaceship/connect_api/spaceship.rb
|
1726
|
-
- spaceship/lib/spaceship/connect_api/testflight/.testflight.rb.swp
|
1727
1731
|
- spaceship/lib/spaceship/connect_api/testflight/client.rb
|
1728
1732
|
- spaceship/lib/spaceship/connect_api/testflight/testflight.rb
|
1729
1733
|
- spaceship/lib/spaceship/connect_api/token.rb
|
@@ -1737,6 +1741,7 @@ files:
|
|
1737
1741
|
- spaceship/lib/spaceship/du/utilities.rb
|
1738
1742
|
- spaceship/lib/spaceship/errors.rb
|
1739
1743
|
- spaceship/lib/spaceship/globals.rb
|
1744
|
+
- spaceship/lib/spaceship/hashcash.rb
|
1740
1745
|
- spaceship/lib/spaceship/helper/net_http_generic_request.rb
|
1741
1746
|
- spaceship/lib/spaceship/helper/plist_middleware.rb
|
1742
1747
|
- spaceship/lib/spaceship/helper/rels_middleware.rb
|
@@ -1830,7 +1835,6 @@ files:
|
|
1830
1835
|
- spaceship/lib/spaceship/tunes/tunes.rb
|
1831
1836
|
- spaceship/lib/spaceship/tunes/tunes_base.rb
|
1832
1837
|
- spaceship/lib/spaceship/tunes/tunes_client.rb
|
1833
|
-
- spaceship/lib/spaceship/tunes/user_detail.rb
|
1834
1838
|
- spaceship/lib/spaceship/tunes/version_set.rb
|
1835
1839
|
- spaceship/lib/spaceship/two_step_or_factor_client.rb
|
1836
1840
|
- spaceship/lib/spaceship/ui.rb
|
@@ -1847,7 +1851,6 @@ files:
|
|
1847
1851
|
- supply/lib/supply/release_listing.rb
|
1848
1852
|
- supply/lib/supply/setup.rb
|
1849
1853
|
- supply/lib/supply/uploader.rb
|
1850
|
-
- trainer/lib/.DS_Store
|
1851
1854
|
- trainer/lib/assets/junit.xml.erb
|
1852
1855
|
- trainer/lib/trainer.rb
|
1853
1856
|
- trainer/lib/trainer/commands_generator.rb
|
@@ -1891,14 +1894,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
1891
1894
|
requirements:
|
1892
1895
|
- - ">="
|
1893
1896
|
- !ruby/object:Gem::Version
|
1894
|
-
version: '2.
|
1897
|
+
version: '2.6'
|
1895
1898
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1896
1899
|
requirements:
|
1897
1900
|
- - ">="
|
1898
1901
|
- !ruby/object:Gem::Version
|
1899
1902
|
version: '0'
|
1900
1903
|
requirements: []
|
1901
|
-
rubygems_version: 3.2.
|
1904
|
+
rubygems_version: 3.2.33
|
1902
1905
|
signing_key:
|
1903
1906
|
specification_version: 4
|
1904
1907
|
summary: The easiest way to automate beta deployments and releases for your iOS and
|
Binary file
|
Binary file
|
data/fastlane/lib/.DS_Store
DELETED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require_relative 'tunes_base'
|
2
|
-
|
3
|
-
module Spaceship
|
4
|
-
module Tunes
|
5
|
-
class UserDetail < TunesBase
|
6
|
-
attr_accessor :content_provider_id
|
7
|
-
attr_accessor :ds_id # used for the team selection (https://github.com/fastlane/fastlane/issues/6711)
|
8
|
-
|
9
|
-
attr_mapping(
|
10
|
-
'contentProviderId' => :content_provider_id,
|
11
|
-
'sessionToken.dsId' => :ds_id
|
12
|
-
)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
data/trainer/lib/.DS_Store
DELETED
Binary file
|