fastlane 2.28.3 → 2.28.4
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/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane_core/lib/fastlane_core/build_watcher.rb +1 -1
- data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +4 -0
- data/fastlane_core/lib/fastlane_core/ui/github_issue_inspector_reporter.rb +2 -2
- data/pilot/lib/pilot/build_manager.rb +16 -14
- data/pilot/lib/pilot/options.rb +2 -1
- data/pilot/lib/pilot/tester_manager.rb +12 -3
- data/snapshot/lib/assets/SnapshotHelper.swift +1 -1
- data/spaceship/lib/spaceship/test_flight.rb +1 -0
- data/spaceship/lib/spaceship/test_flight/build.rb +4 -0
- data/spaceship/lib/spaceship/test_flight/client.rb +24 -2
- data/spaceship/lib/spaceship/test_flight/tester.rb +34 -0
- data/spaceship/lib/spaceship/tunes/app_status.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0741fe0112b31121452836380edebdb3b28bc426
|
|
4
|
+
data.tar.gz: 5993c9a13295c5d4e068c4d198c72950955860af
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7f17c50a5bf22101dd424d8aeba9dc18ee8e5ba136e2e051609cc67cf68b704ed458e1cf3e89ab36b8b57f7fb7f08312941eb7c302195a0d88b14ced356669ac
|
|
7
|
+
data.tar.gz: 60e9099954524f4e149cbd1a1645b4bdea6a157a4540fda6720bb2e75f6ad8f27a8d383660ea5c0156e285a0bb3a58535aa58dfcd9b1974f4a4ab866a6cfa7c7
|
|
@@ -25,7 +25,7 @@ module FastlaneCore
|
|
|
25
25
|
elsif matching_build.active?
|
|
26
26
|
UI.success("Build #{matching_build.train_version} - #{matching_build.build_version} is already being tested")
|
|
27
27
|
return matching_build
|
|
28
|
-
elsif matching_build.ready_to_submit?
|
|
28
|
+
elsif matching_build.ready_to_submit? || matching_build.export_compliance_missing?
|
|
29
29
|
UI.success("Successfully finished processing the build #{matching_build.train_version} - #{matching_build.build_version}")
|
|
30
30
|
return matching_build
|
|
31
31
|
end
|
|
@@ -108,6 +108,10 @@ module Commander
|
|
|
108
108
|
FastlaneCore::UI.error("builds for testing, adding and removing testers from groups, and")
|
|
109
109
|
FastlaneCore::UI.error("waiting for builds to process.")
|
|
110
110
|
FastlaneCore::UI.error("")
|
|
111
|
+
FastlaneCore::UI.error("Please open an issue on https://github.com/fastlane/fastlane/issues")
|
|
112
|
+
FastlaneCore::UI.error("if you believe this failure is the result of a bug in _pilot_ and we")
|
|
113
|
+
FastlaneCore::UI.error("will be happy to look into this further.")
|
|
114
|
+
FastlaneCore::UI.error("")
|
|
111
115
|
FastlaneCore::UI.error("Please stay tuned for more updates from _fastlane_ as we fix more issues!")
|
|
112
116
|
FastlaneCore::UI.error("")
|
|
113
117
|
if FastlaneCore::Globals.verbose?
|
|
@@ -45,8 +45,8 @@ module Fastlane
|
|
|
45
45
|
status = (resolved ? issue.state.green : issue.state.red)
|
|
46
46
|
|
|
47
47
|
puts "➡️ #{issue.title.yellow}"
|
|
48
|
-
puts "
|
|
49
|
-
puts "
|
|
48
|
+
puts " #{issue.html_url} [#{status}] #{issue.comments} 💬"
|
|
49
|
+
puts " #{Time.parse(issue.updated_at).to_pretty}"
|
|
50
50
|
puts ""
|
|
51
51
|
end
|
|
52
52
|
|
|
@@ -46,11 +46,9 @@ module Pilot
|
|
|
46
46
|
config[:app_identifier] = UI.input("App Identifier: ")
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
UI.success "Successfully set the changelog and/or description for build"
|
|
53
|
-
end
|
|
49
|
+
if should_update_build_information(options)
|
|
50
|
+
build.update_build_information!(whats_new: options[:changelog], description: options[:beta_app_description], feedback_email: options[:beta_app_feedback_email])
|
|
51
|
+
UI.success "Successfully set the changelog and/or description for build"
|
|
54
52
|
end
|
|
55
53
|
|
|
56
54
|
return if config[:skip_submission]
|
|
@@ -110,10 +108,10 @@ module Pilot
|
|
|
110
108
|
|
|
111
109
|
# This is where we could add a check to see if encryption is required and has been updated
|
|
112
110
|
uploaded_build.export_compliance.encryption_updated = false
|
|
113
|
-
uploaded_build.beta_review_info.demo_account_required = false
|
|
114
|
-
uploaded_build.submit_for_testflight_review!
|
|
115
111
|
|
|
116
112
|
if options[:distribute_external]
|
|
113
|
+
uploaded_build.beta_review_info.demo_account_required = false
|
|
114
|
+
uploaded_build.submit_for_testflight_review!
|
|
117
115
|
external_group = Spaceship::TestFlight::Group.default_external_group(app_id: uploaded_build.app_id)
|
|
118
116
|
uploaded_build.add_group!(external_group) unless external_group.nil?
|
|
119
117
|
|
|
@@ -121,14 +119,18 @@ module Pilot
|
|
|
121
119
|
UI.user_error!("You must specify at least one group using the `:groups` option to distribute externally")
|
|
122
120
|
end
|
|
123
121
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
122
|
+
if options[:groups]
|
|
123
|
+
groups = Spaceship::TestFlight::Group.filter_groups(app_id: uploaded_build.app_id) do |group|
|
|
124
|
+
options[:groups].include?(group.name)
|
|
125
|
+
end
|
|
126
|
+
groups.each do |group|
|
|
127
|
+
uploaded_build.add_group!(group)
|
|
128
|
+
end
|
|
129
129
|
end
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
else # distribute internally
|
|
131
|
+
# in case any changes to export_compliance are required
|
|
132
|
+
if uploaded_build.export_compliance_missing?
|
|
133
|
+
uploaded_build.save!
|
|
132
134
|
end
|
|
133
135
|
end
|
|
134
136
|
|
data/pilot/lib/pilot/options.rb
CHANGED
|
@@ -65,9 +65,10 @@ module Pilot
|
|
|
65
65
|
is_string: false,
|
|
66
66
|
default_value: false),
|
|
67
67
|
FastlaneCore::ConfigItem.new(key: :update_build_info_on_upload,
|
|
68
|
+
deprecated: true,
|
|
68
69
|
short_option: "-x",
|
|
69
70
|
env_name: "PILOT_UPDATE_BUILD_INFO_ON_UPLOAD",
|
|
70
|
-
description: "Update build info immediately after validation. This will
|
|
71
|
+
description: "Update build info immediately after validation. This is deprecated and will be removed in a future release. iTunesConnect no longer supports setting build info until after build processing has completed, which is when build info is updated by default",
|
|
71
72
|
is_string: false,
|
|
72
73
|
default_value: false),
|
|
73
74
|
FastlaneCore::ConfigItem.new(key: :apple_id,
|
|
@@ -65,9 +65,18 @@ module Pilot
|
|
|
65
65
|
begin
|
|
66
66
|
app = Spaceship::Application.find(app_filter)
|
|
67
67
|
UI.user_error!("Couldn't find app with '#{app_filter}'") unless app
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
|
|
69
|
+
# If no groups are passed to options, remove the tester from the app-level,
|
|
70
|
+
# otherwise remove the tester from the groups specified.
|
|
71
|
+
if config[:groups].nil?
|
|
72
|
+
test_flight_tester = Spaceship::TestFlight::Tester.find(app_id: app.apple_id, email: tester.email)
|
|
73
|
+
test_flight_tester.remove_from_app!(app_id: app.apple_id)
|
|
74
|
+
UI.success("Successfully removed tester, #{test_flight_tester.email}, from app: #{app_filter}")
|
|
75
|
+
else
|
|
76
|
+
groups = remove_tester_from_groups!(tester: tester, app: app, groups: config[:groups])
|
|
77
|
+
group_names = groups.map(&:name).join(", ")
|
|
78
|
+
UI.success("Successfully removed tester #{tester.email} from app #{app_filter} in group(s) #{group_names}")
|
|
79
|
+
end
|
|
71
80
|
rescue => ex
|
|
72
81
|
UI.error("Could not remove #{tester.email} from app: #{ex}")
|
|
73
82
|
raise ex
|
|
@@ -145,7 +145,7 @@ open class Snapshot: NSObject {
|
|
|
145
145
|
print("Can't prepare environment. Simulator home location is inaccessible. Does \(simulatorHostHome) exist?")
|
|
146
146
|
return nil
|
|
147
147
|
}
|
|
148
|
-
homeDir = homeDirUrl
|
|
148
|
+
homeDir = URL(fileURLWithPath: homeDirUrl.path)
|
|
149
149
|
#endif
|
|
150
150
|
return homeDir.appendingPathComponent("Library/Caches/tools.fastlane")
|
|
151
151
|
}
|
|
@@ -121,6 +121,10 @@ module Spaceship::TestFlight
|
|
|
121
121
|
external_state == BUILD_STATES[:processing]
|
|
122
122
|
end
|
|
123
123
|
|
|
124
|
+
def export_compliance_missing?
|
|
125
|
+
external_state == BUILD_STATES[:export_compliance_missing]
|
|
126
|
+
end
|
|
127
|
+
|
|
124
128
|
# Getting builds from BuildTrains only gets a partial Build object
|
|
125
129
|
# We are then requesting the full build from iTC when we need to access
|
|
126
130
|
# any of the variables below, because they are not inlcuded in the partial Build objects
|
|
@@ -20,6 +20,20 @@ module Spaceship::TestFlight
|
|
|
20
20
|
handle_response(response)
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
+
def testers_for_app(app_id: nil)
|
|
24
|
+
assert_required_params(__method__, binding)
|
|
25
|
+
url = "providers/#{team_id}/apps/#{app_id}/testers"
|
|
26
|
+
response = request(:get, url)
|
|
27
|
+
handle_response(response)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def delete_tester_from_app(app_id: nil, tester_id: nil)
|
|
31
|
+
assert_required_params(__method__, binding)
|
|
32
|
+
url = "providers/#{team_id}/apps/#{app_id}/testers/#{tester_id}"
|
|
33
|
+
response = request(:delete, url)
|
|
34
|
+
handle_response(response)
|
|
35
|
+
end
|
|
36
|
+
|
|
23
37
|
def post_tester(app_id: nil, tester: nil)
|
|
24
38
|
assert_required_params(__method__, binding)
|
|
25
39
|
url = "providers/#{team_id}/apps/#{app_id}/testers"
|
|
@@ -128,12 +142,20 @@ module Spaceship::TestFlight
|
|
|
128
142
|
#
|
|
129
143
|
# @raises NameError if the values are nil
|
|
130
144
|
def assert_required_params(method_name, binding)
|
|
131
|
-
parameter_names =
|
|
145
|
+
parameter_names = method(method_name).parameters.map { |k, v| v }
|
|
132
146
|
parameter_names.each do |name|
|
|
133
|
-
if
|
|
147
|
+
if local_variable_get(binding, name).nil?
|
|
134
148
|
raise NameError, "`#{name}' is a required parameter"
|
|
135
149
|
end
|
|
136
150
|
end
|
|
137
151
|
end
|
|
152
|
+
|
|
153
|
+
def local_variable_get(binding, name)
|
|
154
|
+
if binding.respond_to?(:local_variable_get)
|
|
155
|
+
binding.local_variable_get(name)
|
|
156
|
+
else
|
|
157
|
+
binding.eval(name.to_s)
|
|
158
|
+
end
|
|
159
|
+
end
|
|
138
160
|
end
|
|
139
161
|
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Spaceship::TestFlight
|
|
2
|
+
class Tester < Base
|
|
3
|
+
# @return (String) The identifier of this tester, provided by iTunes Connect
|
|
4
|
+
# @example
|
|
5
|
+
# "60f858b4-60a8-428a-963a-f943a3d68d17"
|
|
6
|
+
attr_accessor :tester_id
|
|
7
|
+
|
|
8
|
+
# @return (String) The email of this tester
|
|
9
|
+
# @example
|
|
10
|
+
# "tester@spaceship.com"
|
|
11
|
+
attr_accessor :email
|
|
12
|
+
|
|
13
|
+
attr_mapping(
|
|
14
|
+
'id' => :tester_id,
|
|
15
|
+
'email' => :email
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
# @return (Array) Returns all beta testers available for this account
|
|
19
|
+
def self.all(app_id: nil)
|
|
20
|
+
client.testers_for_app(app_id: app_id).map { |data| self.new(data) }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# @return (Spaceship::TestFlight::Tester) Returns the tester matching the parameter
|
|
24
|
+
# as either the Tester id or email
|
|
25
|
+
# @param email (String) (required): Value used to filter the tester, case insensitive
|
|
26
|
+
def self.find(app_id: nil, email: nil)
|
|
27
|
+
self.all(app_id: app_id).find { |tester| tester.email == email }
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def remove_from_app!(app_id: nil)
|
|
31
|
+
client.delete_tester_from_app(app_id: app_id, tester_id: self.tester_id)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -46,6 +46,7 @@ module Spaceship
|
|
|
46
46
|
'developerRemovedFromSale' => DEVELOPER_REMOVED_FROM_SALE,
|
|
47
47
|
'waitingForReview' => WAITING_FOR_REVIEW,
|
|
48
48
|
'inReview' => IN_REVIEW,
|
|
49
|
+
'rejected' => REJECTED,
|
|
49
50
|
'pendingDeveloperRelease' => PENDING_DEVELOPER_RELEASE,
|
|
50
51
|
'metadataRejected' => METADATA_REJECTED
|
|
51
52
|
}
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fastlane
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.28.
|
|
4
|
+
version: 2.28.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Felix Krause
|
|
@@ -15,7 +15,7 @@ authors:
|
|
|
15
15
|
autorequire:
|
|
16
16
|
bindir: bin
|
|
17
17
|
cert_chain: []
|
|
18
|
-
date: 2017-04-
|
|
18
|
+
date: 2017-04-25 00:00:00.000000000 Z
|
|
19
19
|
dependencies:
|
|
20
20
|
- !ruby/object:Gem::Dependency
|
|
21
21
|
name: slack-notifier
|
|
@@ -1279,6 +1279,7 @@ files:
|
|
|
1279
1279
|
- spaceship/lib/spaceship/test_flight/export_compliance.rb
|
|
1280
1280
|
- spaceship/lib/spaceship/test_flight/group.rb
|
|
1281
1281
|
- spaceship/lib/spaceship/test_flight/test_info.rb
|
|
1282
|
+
- spaceship/lib/spaceship/test_flight/tester.rb
|
|
1282
1283
|
- spaceship/lib/spaceship/tunes/app_details.rb
|
|
1283
1284
|
- spaceship/lib/spaceship/tunes/app_image.rb
|
|
1284
1285
|
- spaceship/lib/spaceship/tunes/app_ratings.rb
|