fastlane 2.98.0 → 2.99.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +70 -70
- data/credentials_manager/lib/credentials_manager/appfile_config.rb +1 -1
- data/deliver/lib/assets/DeliverfileDefault +1 -1
- data/deliver/lib/assets/DeliverfileDefault.swift +1 -1
- data/deliver/lib/assets/summary.html.erb +1 -1
- data/deliver/lib/deliver/commands_generator.rb +2 -2
- data/deliver/lib/deliver/detect_values.rb +1 -1
- data/deliver/lib/deliver/download_screenshots.rb +1 -1
- data/deliver/lib/deliver/options.rb +3 -3
- data/deliver/lib/deliver/runner.rb +9 -9
- data/deliver/lib/deliver/submit_for_review.rb +3 -3
- data/deliver/lib/deliver/upload_metadata.rb +3 -3
- data/deliver/lib/deliver/upload_screenshots.rb +2 -2
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +3 -3
- data/fastlane/lib/fastlane/actions/cocoapods.rb +1 -0
- data/fastlane/lib/fastlane/actions/create_app_online.rb +1 -1
- data/fastlane/lib/fastlane/actions/docs/check_app_store_metadata.md +3 -3
- data/fastlane/lib/fastlane/actions/docs/create_app_online.md +8 -8
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -1
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +14 -14
- data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +2 -2
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +7 -7
- data/fastlane/lib/fastlane/actions/github_api.rb +2 -0
- data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +2 -2
- data/fastlane/lib/fastlane/actions/set_changelog.rb +6 -6
- data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +1 -1
- data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +1 -1
- data/fastlane/lib/fastlane/command_line_handler.rb +2 -2
- data/fastlane/lib/fastlane/commands_generator.rb +1 -0
- data/fastlane/lib/fastlane/fast_file.rb +8 -6
- data/fastlane/lib/fastlane/lane_manager.rb +0 -3
- data/fastlane/lib/fastlane/runner.rb +1 -9
- data/fastlane/lib/fastlane/server/socket_server.rb +4 -2
- data/fastlane/lib/fastlane/setup/setup_ios.rb +12 -12
- data/fastlane/lib/fastlane/swift_lane_manager.rb +9 -8
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Appfile.swift +1 -1
- data/fastlane/swift/ArgumentProcessor.swift +3 -1
- data/fastlane/swift/ControlCommand.swift +0 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +3 -3
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/LaneFileProtocol.swift +0 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/RubyCommand.swift +0 -1
- data/fastlane/swift/RubyCommandable.swift +0 -1
- data/fastlane/swift/Runner.swift +7 -7
- data/fastlane/swift/RunnerArgument.swift +0 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SocketClient.swift +0 -1
- data/fastlane/swift/SocketClientDelegateProtocol.swift +0 -1
- data/fastlane/swift/SocketResponse.swift +0 -1
- data/fastlane/swift/main.swift +2 -2
- data/fastlane_core/lib/fastlane_core/analytics/analytics_event_builder.rb +10 -39
- data/fastlane_core/lib/fastlane_core/analytics/analytics_ingester_client.rb +34 -30
- data/fastlane_core/lib/fastlane_core/analytics/analytics_session.rb +16 -176
- data/fastlane_core/lib/fastlane_core/analytics/app_identifier_guesser.rb +1 -1
- data/fastlane_core/lib/fastlane_core/build_watcher.rb +2 -2
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +8 -8
- data/fastlane_core/lib/fastlane_core/module.rb +2 -5
- data/fastlane_core/lib/fastlane_core/ui/errors/fastlane_error.rb +0 -1
- data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +5 -7
- data/gym/lib/gym/detect_values.rb +23 -0
- data/gym/lib/gym/generators/package_command_generator_xcode7.rb +1 -21
- data/match/lib/match/spaceship_ensure.rb +1 -1
- data/pilot/lib/pilot/build_manager.rb +2 -2
- data/pilot/lib/pilot/manager.rb +2 -2
- data/pilot/lib/pilot/options.rb +4 -4
- data/precheck/lib/precheck/options.rb +2 -2
- data/produce/lib/produce/commands_generator.rb +1 -1
- data/produce/lib/produce/developer_center.rb +1 -1
- data/produce/lib/produce/itunes_connect.rb +6 -6
- data/produce/lib/produce/options.rb +4 -4
- data/scan/lib/scan/test_command_generator.rb +6 -2
- data/screengrab/lib/screengrab/runner.rb +2 -2
- data/sigh/lib/sigh/runner.rb +6 -1
- data/snapshot/lib/assets/SnapshotHelper.swift +0 -1
- data/snapshot/lib/assets/SnapshotHelperXcode8.swift +0 -1
- data/spaceship/README.md +3 -3
- data/spaceship/lib/spaceship.rb +1 -1
- data/spaceship/lib/spaceship/client.rb +12 -7
- data/spaceship/lib/spaceship/du/du_client.rb +1 -1
- data/spaceship/lib/spaceship/errors.rb +1 -1
- data/spaceship/lib/spaceship/module.rb +1 -1
- data/spaceship/lib/spaceship/playground.rb +3 -3
- data/spaceship/lib/spaceship/portal/portal_client.rb +2 -2
- data/spaceship/lib/spaceship/spaceauth_runner.rb +5 -5
- data/spaceship/lib/spaceship/test_flight/client.rb +12 -1
- data/spaceship/lib/spaceship/test_flight/group.rb +1 -1
- data/spaceship/lib/spaceship/test_flight/tester.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_analytics.rb +143 -0
- data/spaceship/lib/spaceship/tunes/app_details.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_image.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_screenshot.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_status.rb +2 -2
- data/spaceship/lib/spaceship/tunes/app_submission.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_trailer.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_version.rb +6 -6
- data/spaceship/lib/spaceship/tunes/app_version_history.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_version_states_history.rb +1 -1
- data/spaceship/lib/spaceship/tunes/application.rb +15 -4
- data/spaceship/lib/spaceship/tunes/availability.rb +24 -8
- data/spaceship/lib/spaceship/tunes/b2b_user.rb +7 -2
- data/spaceship/lib/spaceship/tunes/build.rb +2 -2
- data/spaceship/lib/spaceship/tunes/build_details.rb +1 -1
- data/spaceship/lib/spaceship/tunes/build_train.rb +2 -2
- data/spaceship/lib/spaceship/tunes/errors.rb +1 -1
- data/spaceship/lib/spaceship/tunes/iap.rb +2 -2
- data/spaceship/lib/spaceship/tunes/iap_status.rb +1 -1
- data/spaceship/lib/spaceship/tunes/iap_type.rb +1 -1
- data/spaceship/lib/spaceship/tunes/tunes.rb +1 -0
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +41 -13
- data/spaceship/lib/spaceship/two_step_client.rb +1 -1
- metadata +15 -14
@@ -24,8 +24,7 @@ module Spaceship
|
|
24
24
|
# @return (Bool) b2b available for distribution
|
25
25
|
attr_accessor :b2b_unavailable
|
26
26
|
|
27
|
-
# @return (Array of Spaceship::Tunes::B2bUser objects) A list of users
|
28
|
-
# then the b2b user list that is currently set
|
27
|
+
# @return (Array of Spaceship::Tunes::B2bUser objects) A list of users
|
29
28
|
attr_accessor :b2b_users
|
30
29
|
|
31
30
|
attr_mapping(
|
@@ -78,7 +77,7 @@ module Spaceship
|
|
78
77
|
end
|
79
78
|
|
80
79
|
def b2b_users
|
81
|
-
@b2b_users
|
80
|
+
@b2b_users || raw_data['b2bUsers'].map { |user| B2bUser.new(user) }
|
82
81
|
end
|
83
82
|
|
84
83
|
def b2b_app_enabled
|
@@ -100,16 +99,33 @@ module Spaceship
|
|
100
99
|
@b2b_app_enabled = true
|
101
100
|
# need to set the educational discount to false
|
102
101
|
@educational_discount = false
|
103
|
-
self
|
102
|
+
return self
|
104
103
|
end
|
105
104
|
|
106
105
|
# Adds users for b2b enabled apps
|
107
106
|
def add_b2b_users(user_list = [])
|
108
107
|
raise "Cannot add b2b users if b2b is not enabled" unless b2b_app_enabled
|
109
|
-
@b2b_users = user_list.map
|
110
|
-
|
111
|
-
|
112
|
-
|
108
|
+
@b2b_users = user_list.map { |user| B2bUser.from_username(user) }
|
109
|
+
return self
|
110
|
+
end
|
111
|
+
|
112
|
+
# Updates users for b2b enabled apps
|
113
|
+
def update_b2b_users(user_list = [])
|
114
|
+
raise "Cannot add b2b users if b2b is not enabled" unless b2b_app_enabled
|
115
|
+
|
116
|
+
added_users = b2b_users.map(&:ds_username)
|
117
|
+
|
118
|
+
# Returns if list is unchanged
|
119
|
+
return self if (added_users - user_list) == (user_list - added_users)
|
120
|
+
|
121
|
+
users_to_add = user_list.reject { |user| added_users.include?(user) }
|
122
|
+
users_to_remove = added_users.reject { |user| user_list.include?(user) }
|
123
|
+
|
124
|
+
@b2b_users = b2b_users.reject { |user| users_to_remove.include?(user.ds_username) }
|
125
|
+
@b2b_users.concat(users_to_add.map { |user| B2bUser.from_username(user) })
|
126
|
+
@b2b_users.concat(users_to_remove.map { |user| B2bUser.from_username(user, is_add_type: false) })
|
127
|
+
|
128
|
+
return self
|
113
129
|
end
|
114
130
|
end
|
115
131
|
end
|
@@ -17,8 +17,13 @@ module Spaceship
|
|
17
17
|
'value.dsUsername' => :ds_username
|
18
18
|
)
|
19
19
|
|
20
|
-
def self.from_username(username)
|
21
|
-
self.new({ 'value' => { 'add' =>
|
20
|
+
def self.from_username(username, is_add_type: true)
|
21
|
+
self.new({ 'value' => { 'add' => is_add_type, 'delete' => !is_add_type, 'dsUsername' => username } })
|
22
|
+
end
|
23
|
+
|
24
|
+
# equality check for the two objects
|
25
|
+
def ==(other)
|
26
|
+
add == other.add && delete == other.delete && ds_username == other.ds_username
|
22
27
|
end
|
23
28
|
end
|
24
29
|
end
|
@@ -8,7 +8,7 @@ module Spaceship
|
|
8
8
|
# @!group General metadata
|
9
9
|
#####################################################
|
10
10
|
|
11
|
-
# @return (String) The App identifier of this app, provided by
|
11
|
+
# @return (String) The App identifier of this app, provided by App Store Connect
|
12
12
|
# @example
|
13
13
|
# "1013943394"
|
14
14
|
attr_accessor :apple_id
|
@@ -16,7 +16,7 @@ module Spaceship
|
|
16
16
|
# @return (Spaceship::Tunes::BuildTrain) A reference to the build train this build is contained in
|
17
17
|
attr_accessor :build_train
|
18
18
|
|
19
|
-
# @return (Integer) The ID generated by
|
19
|
+
# @return (Integer) The ID generated by App Store Connect
|
20
20
|
attr_accessor :id
|
21
21
|
|
22
22
|
# @return (Boolean)
|
@@ -4,7 +4,7 @@ module Spaceship
|
|
4
4
|
module Tunes
|
5
5
|
# Represents the details of a build
|
6
6
|
class BuildDetails < TunesBase
|
7
|
-
# @return (String) The App identifier of this app, provided by
|
7
|
+
# @return (String) The App identifier of this app, provided by App Store Connect
|
8
8
|
# @example
|
9
9
|
# "1013943394"
|
10
10
|
attr_accessor :apple_id
|
@@ -4,7 +4,7 @@ require_relative 'build'
|
|
4
4
|
|
5
5
|
module Spaceship
|
6
6
|
module Tunes
|
7
|
-
# Represents a build train of builds from
|
7
|
+
# Represents a build train of builds from App Store Connect
|
8
8
|
# A build train is all builds for a given version number with different build numbers
|
9
9
|
class BuildTrain < TunesBase
|
10
10
|
# @return (Spaceship::Tunes::Application) A reference to the application this train is for
|
@@ -165,7 +165,7 @@ module Spaceship
|
|
165
165
|
error_message << "<key>ITSAppUsesNonExemptEncryption</key><false/>"
|
166
166
|
error_message << ""
|
167
167
|
error_message << "Afterwards re-build your app and try again"
|
168
|
-
error_message << "
|
168
|
+
error_message << "App Store Connect reported: '#{ex}'"
|
169
169
|
raise error_message.join("\n")
|
170
170
|
else
|
171
171
|
raise ex
|
@@ -2,7 +2,7 @@ require_relative '../errors'
|
|
2
2
|
|
3
3
|
module Spaceship
|
4
4
|
module Tunes
|
5
|
-
# ITunesConnectError is only thrown when
|
5
|
+
# ITunesConnectError is only thrown when App Store Connect raises an exception
|
6
6
|
class Error < BasicPreferredInfoError
|
7
7
|
end
|
8
8
|
|
@@ -22,7 +22,7 @@ module Spaceship
|
|
22
22
|
Tunes::IAPFamilies.new(attrs)
|
23
23
|
end
|
24
24
|
|
25
|
-
# Creates a new In-App-Purchese on
|
25
|
+
# Creates a new In-App-Purchese on App Store Connect
|
26
26
|
# if the In-App-Purchase already exists an exception is raised. Spaceship::TunesClient::ITunesConnectError
|
27
27
|
# @param type (String): The Type of the in-app-purchase (Spaceship::Tunes::IAPType::CONSUMABLE,Spaceship::Tunes::IAPType::NON_CONSUMABLE,Spaceship::Tunes::IAPType::RECURRING,Spaceship::Tunes::IAPType::NON_RENEW_SUBSCRIPTION)
|
28
28
|
# @param versions (Hash): a Hash of the languages
|
@@ -118,7 +118,7 @@ module Spaceship
|
|
118
118
|
|
119
119
|
# return all available In-App-Purchase's of current app
|
120
120
|
# this is not paged inside iTC-API so if you have a lot if IAP's (2k+)
|
121
|
-
# it might take some time to load, same as it takes when you load the list via
|
121
|
+
# it might take some time to load, same as it takes when you load the list via App Store Connect
|
122
122
|
def all(include_deleted: false)
|
123
123
|
r = client.iaps(app_id: self.application.apple_id)
|
124
124
|
return_iaps = []
|
@@ -28,7 +28,7 @@ module Spaceship
|
|
28
28
|
# The developer took the app from the App Store
|
29
29
|
DEVELOPER_REMOVED_FROM_SALE = "Developer Removed From Sale"
|
30
30
|
|
31
|
-
# Get the iap status matching based on a string (given by
|
31
|
+
# Get the iap status matching based on a string (given by App Store Connect)
|
32
32
|
def self.get_from_string(text)
|
33
33
|
mapping = {
|
34
34
|
'missingMetadata' => MISSING_METADATA,
|
@@ -21,7 +21,7 @@ module Spaceship
|
|
21
21
|
# A product that allows users to purchase a service with a limited duration.
|
22
22
|
READABLE_NON_RENEWING_SUBSCRIPTION = "Non-Renewing Subscription"
|
23
23
|
|
24
|
-
# Get the iap type matching based on a string (given by
|
24
|
+
# Get the iap type matching based on a string (given by App Store Connect)
|
25
25
|
def self.get_from_string(text)
|
26
26
|
mapping = {
|
27
27
|
'ITC.addons.type.consumable' => READABLE_CONSUMABLE,
|
@@ -62,7 +62,7 @@ module Spaceship
|
|
62
62
|
t_name = (team_name || ENV['FASTLANE_ITC_TEAM_NAME'] || '').strip
|
63
63
|
|
64
64
|
if t_name.length > 0 && t_id.length.zero? # we prefer IDs over names, they are unique
|
65
|
-
puts("Looking for
|
65
|
+
puts("Looking for App Store Connect Team with name #{t_name}") if Spaceship::Globals.verbose?
|
66
66
|
|
67
67
|
teams.each do |t|
|
68
68
|
t_id = t['contentProvider']['contentProviderId'].to_s if t['contentProvider']['name'].casecmp(t_name).zero?
|
@@ -74,7 +74,7 @@ module Spaceship
|
|
74
74
|
t_id = teams.first['contentProvider']['contentProviderId'].to_s if teams.count == 1
|
75
75
|
|
76
76
|
if t_id.length > 0
|
77
|
-
puts("Looking for
|
77
|
+
puts("Looking for App Store Connect Team with ID #{t_id}") if Spaceship::Globals.verbose?
|
78
78
|
|
79
79
|
# actually set the team id here
|
80
80
|
self.team_id = t_id
|
@@ -83,9 +83,9 @@ module Spaceship
|
|
83
83
|
|
84
84
|
# user didn't specify a team... #thisiswhywecanthavenicethings
|
85
85
|
loop do
|
86
|
-
puts("Multiple #{'
|
86
|
+
puts("Multiple #{'App Store Connect teams'.yellow} found, please enter the number of the team you want to use: ")
|
87
87
|
if ENV["FASTLANE_HIDE_TEAM_INFORMATION"].to_s.length == 0
|
88
|
-
puts("Note: to automatically choose the team, provide either the
|
88
|
+
puts("Note: to automatically choose the team, provide either the App Store Connect Team ID, or the Team Name in your fastlane/Appfile:")
|
89
89
|
puts("Alternatively you can pass the team name or team ID using the `FASTLANE_ITC_TEAM_ID` or `FASTLANE_ITC_TEAM_NAME` environment variable")
|
90
90
|
first_team = teams.first["contentProvider"]
|
91
91
|
puts("")
|
@@ -103,9 +103,9 @@ module Spaceship
|
|
103
103
|
end
|
104
104
|
|
105
105
|
unless Spaceship::Client::UserInterface.interactive?
|
106
|
-
puts("Multiple teams found on
|
106
|
+
puts("Multiple teams found on App Store Connect, Your Terminal is running in non-interactive mode! Cannot continue from here.")
|
107
107
|
puts("Please check that you set FASTLANE_ITC_TEAM_ID or FASTLANE_ITC_TEAM_NAME to the right value.")
|
108
|
-
raise "Multiple
|
108
|
+
raise "Multiple App Store Connect Teams found; unable to choose, terminal not interactive!"
|
109
109
|
end
|
110
110
|
|
111
111
|
selected = ($stdin.gets || '').strip.to_i - 1
|
@@ -270,7 +270,7 @@ module Spaceship
|
|
270
270
|
handle_itc_response(r.body)
|
271
271
|
end
|
272
272
|
|
273
|
-
# Creates a new application on
|
273
|
+
# Creates a new application on App Store Connect
|
274
274
|
# @param name (String): The name of your app as it will appear on the App Store.
|
275
275
|
# This can't be longer than 255 characters.
|
276
276
|
# @param primary_language (String): If localized app information isn't available in an
|
@@ -510,6 +510,31 @@ module Spaceship
|
|
510
510
|
handle_itc_response(r.body)
|
511
511
|
end
|
512
512
|
|
513
|
+
#####################################################
|
514
|
+
# @!group AppAnalytics
|
515
|
+
#####################################################
|
516
|
+
|
517
|
+
def time_series_analytics(app_ids, measures, start_time, end_time, frequency)
|
518
|
+
data = {
|
519
|
+
adamId: app_ids,
|
520
|
+
dimensionFilters: [],
|
521
|
+
endTime: end_time,
|
522
|
+
frequency: frequency,
|
523
|
+
group: nil,
|
524
|
+
measures: measures,
|
525
|
+
startTime: start_time
|
526
|
+
}
|
527
|
+
|
528
|
+
r = request(:post) do |req|
|
529
|
+
req.url("https://analytics.itunes.apple.com/analytics/api/v1/data/time-series")
|
530
|
+
req.body = data.to_json
|
531
|
+
req.headers['Content-Type'] = 'application/json'
|
532
|
+
req.headers['X-Requested-By'] = 'analytics.itunes.apple.com'
|
533
|
+
end
|
534
|
+
|
535
|
+
data = parse_response(r)
|
536
|
+
end
|
537
|
+
|
513
538
|
#####################################################
|
514
539
|
# @!group Pricing
|
515
540
|
#####################################################
|
@@ -824,13 +849,13 @@ module Spaceship
|
|
824
849
|
if retry_error_messages.any? { |message| ex.to_s.include?(message) }
|
825
850
|
tries -= 1
|
826
851
|
if tries > 0
|
827
|
-
logger.warn("Received temporary server error from
|
852
|
+
logger.warn("Received temporary server error from App Store Connect. Retrying the request...")
|
828
853
|
sleep(3) unless Object.const_defined?("SpecHelper")
|
829
854
|
retry
|
830
855
|
end
|
831
856
|
end
|
832
857
|
|
833
|
-
raise Spaceship::Client::UnexpectedResponse, "Temporary
|
858
|
+
raise Spaceship::Client::UnexpectedResponse, "Temporary App Store Connect error: #{ex}"
|
834
859
|
end
|
835
860
|
# rubocop:enable Metrics/BlockNesting
|
836
861
|
|
@@ -1018,12 +1043,15 @@ module Spaceship
|
|
1018
1043
|
|
1019
1044
|
handle_itc_response(r.body)
|
1020
1045
|
|
1021
|
-
#
|
1022
|
-
# was failed because of Ad ID
|
1023
|
-
# keys in returned adIdInfo and prints them out.
|
1046
|
+
# App Store Connect still returns a success status code even the submission
|
1047
|
+
# was failed because of Ad ID Info / Export Complicance. This checks for any section error
|
1048
|
+
# keys in returned adIdInfo / exportCompliance and prints them out.
|
1024
1049
|
ad_id_error_keys = r.body.fetch('data').fetch('adIdInfo').fetch('sectionErrorKeys')
|
1050
|
+
export_error_keys = r.body.fetch('data').fetch('exportCompliance').fetch('sectionErrorKeys')
|
1025
1051
|
if ad_id_error_keys.any?
|
1026
1052
|
raise "Something wrong with your Ad ID information: #{ad_id_error_keys}."
|
1053
|
+
elsif export_error_keys.any?
|
1054
|
+
raise "Something wrong with your Export Complicance: #{export_error_keys}"
|
1027
1055
|
elsif r.body.fetch('messages').fetch('info').last == "Successful POST"
|
1028
1056
|
# success
|
1029
1057
|
else
|
@@ -1341,7 +1369,7 @@ module Spaceship
|
|
1341
1369
|
return yield
|
1342
1370
|
rescue Spaceship::TunesClient::ITunesConnectTemporaryError => ex
|
1343
1371
|
unless (tries -= 1).zero?
|
1344
|
-
msg = "
|
1372
|
+
msg = "App Store Connect temporary error received: '#{ex.message}'. Retrying after 60 seconds (remaining: #{tries})..."
|
1345
1373
|
puts(msg)
|
1346
1374
|
logger.warn(msg)
|
1347
1375
|
sleep(60) unless Object.const_defined?("SpecHelper")
|
@@ -181,7 +181,7 @@ module Spaceship
|
|
181
181
|
def store_session
|
182
182
|
# If the request was successful, r.body is actually nil
|
183
183
|
# The previous request will fail if the user isn't on a team
|
184
|
-
# on
|
184
|
+
# on App Store Connect, but it still works, so we're good
|
185
185
|
|
186
186
|
# Tell iTC that we are trustworthy (obviously)
|
187
187
|
# This will update our local cookies to something new
|
metadata
CHANGED
@@ -1,33 +1,33 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.99.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Stefan Natchev
|
8
|
-
- Jimmy Dee
|
9
7
|
- Maksym Grebenets
|
10
|
-
- Joshua Liebowitz
|
11
|
-
- Jérôme Lacoste
|
12
8
|
- Helmut Januschka
|
13
|
-
-
|
9
|
+
- Jan Piotrowski
|
10
|
+
- Josh Holtz
|
11
|
+
- Fumiya Nakamura
|
12
|
+
- Jimmy Dee
|
14
13
|
- Kohki Miki
|
14
|
+
- Aaron Brager
|
15
|
+
- Matthew Ellis
|
16
|
+
- Iulian Onofrei
|
17
|
+
- Jérôme Lacoste
|
18
|
+
- Joshua Liebowitz
|
15
19
|
- Felix Krause
|
16
|
-
- Josh Holtz
|
17
|
-
- Jan Piotrowski
|
18
20
|
- Danielle Tomlinson
|
19
|
-
- Aaron Brager
|
20
|
-
- Manu Wallner
|
21
21
|
- Jorge Revuelta H
|
22
|
-
-
|
23
|
-
- Fumiya Nakamura
|
24
|
-
- Iulian Onofrei
|
22
|
+
- Manu Wallner
|
25
23
|
- Luka Mirosevic
|
24
|
+
- Olivier Halligon
|
25
|
+
- Stefan Natchev
|
26
26
|
- Andrew McBurney
|
27
27
|
autorequire:
|
28
28
|
bindir: bin
|
29
29
|
cert_chain: []
|
30
|
-
date: 2018-
|
30
|
+
date: 2018-07-02 00:00:00.000000000 Z
|
31
31
|
dependencies:
|
32
32
|
- !ruby/object:Gem::Dependency
|
33
33
|
name: slack-notifier
|
@@ -1576,6 +1576,7 @@ files:
|
|
1576
1576
|
- spaceship/lib/spaceship/test_flight/group.rb
|
1577
1577
|
- spaceship/lib/spaceship/test_flight/test_info.rb
|
1578
1578
|
- spaceship/lib/spaceship/test_flight/tester.rb
|
1579
|
+
- spaceship/lib/spaceship/tunes/app_analytics.rb
|
1579
1580
|
- spaceship/lib/spaceship/tunes/app_details.rb
|
1580
1581
|
- spaceship/lib/spaceship/tunes/app_image.rb
|
1581
1582
|
- spaceship/lib/spaceship/tunes/app_ratings.rb
|