fastlane 2.191.0 → 2.194.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 +84 -84
- data/cert/lib/cert/options.rb +1 -1
- data/deliver/lib/deliver/options.rb +1 -1
- data/fastlane/lib/assets/completions/completion.bash +4 -1
- data/fastlane/lib/assets/completions/completion.zsh +6 -5
- data/fastlane/lib/fastlane/actions/.notarize.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +1 -1
- data/fastlane/lib/fastlane/actions/create_xcframework.rb +97 -17
- data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +1 -1
- data/fastlane/lib/fastlane/actions/gradle.rb +1 -1
- data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +1 -1
- data/fastlane/lib/fastlane/actions/notarize.rb +97 -12
- data/fastlane/lib/fastlane/actions/push_git_tags.rb +1 -1
- data/fastlane/lib/fastlane/actions/register_device.rb +1 -1
- data/fastlane/lib/fastlane/actions/register_devices.rb +1 -1
- data/fastlane/lib/fastlane/actions/set_changelog.rb +1 -1
- data/fastlane/lib/fastlane/actions/slather.rb +6 -0
- data/fastlane/lib/fastlane/actions/sync_code_signing.rb +1 -1
- data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +3 -1
- data/fastlane/lib/fastlane/actions/zip.rb +5 -5
- data/fastlane/lib/fastlane/documentation/markdown_docs_generator.rb +11 -5
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +2 -2
- data/fastlane/swift/Fastlane.swift +101 -43
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +3 -3
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/PrecheckfileProtocol.swift +2 -2
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +1 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
- data/fastlane/swift/formatting/Brewfile.lock.json +10 -10
- data/fastlane_core/lib/fastlane_core/build_watcher.rb +25 -6
- data/fastlane_core/lib/fastlane_core/pkg_file_analyser.rb +5 -0
- data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +41 -0
- data/match/lib/match/options.rb +2 -2
- data/match/lib/match/runner.rb +10 -9
- data/pilot/lib/pilot/build_manager.rb +14 -4
- data/pilot/lib/pilot/manager.rb +3 -1
- data/pilot/lib/pilot/options.rb +21 -2
- data/precheck/lib/precheck/options.rb +1 -1
- data/produce/lib/produce/service.rb +1 -1
- data/sigh/lib/assets/resign.sh +1 -1
- data/sigh/lib/sigh/options.rb +1 -1
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +2 -1
- data/spaceship/lib/spaceship/connect_api/api_client.rb +15 -1
- data/spaceship/lib/spaceship/connect_api/models/app.rb +2 -1
- data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/build.rb +4 -0
- data/spaceship/lib/spaceship/connect_api/models/build_beta_detail.rb +4 -0
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +7 -5
- data/spaceship/lib/spaceship/connect_api/token.rb +2 -0
- data/supply/lib/supply/client.rb +38 -5
- data/supply/lib/supply/options.rb +7 -0
- data/supply/lib/supply/uploader.rb +9 -6
- metadata +35 -20
@@ -35,7 +35,7 @@ module Precheck
|
|
35
35
|
end),
|
36
36
|
FastlaneCore::ConfigItem.new(key: :api_key,
|
37
37
|
env_names: ["PRECHECK_API_KEY", "APP_STORE_CONNECT_API_KEY"],
|
38
|
-
description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#
|
38
|
+
description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)",
|
39
39
|
type: Hash,
|
40
40
|
optional: true,
|
41
41
|
sensitive: true,
|
data/sigh/lib/assets/resign.sh
CHANGED
@@ -644,7 +644,7 @@ function resign {
|
|
644
644
|
# Get the old and new app identifier (prefix)
|
645
645
|
APP_ID_KEY="application-identifier"
|
646
646
|
# Extract just the identifier from the value
|
647
|
-
# Use the fact that we are after some
|
647
|
+
# Use the fact that we are after some identifier, which is always at the start of the string
|
648
648
|
OLD_APP_ID=$(PlistBuddy -c "Print $APP_ID_KEY" "$APP_ENTITLEMENTS" | grep -E '^[A-Z0-9]*' -o | tr -d '\n')
|
649
649
|
NEW_APP_ID=$(PlistBuddy -c "Print $APP_ID_KEY" "$PROFILE_ENTITLEMENTS" | grep -E '^[A-Z0-9]*' -o | tr -d '\n')
|
650
650
|
|
data/sigh/lib/sigh/options.rb
CHANGED
@@ -66,7 +66,7 @@ module Sigh
|
|
66
66
|
end),
|
67
67
|
FastlaneCore::ConfigItem.new(key: :api_key,
|
68
68
|
env_names: ["SIGH_API_KEY", "APP_STORE_CONNECT_API_KEY"],
|
69
|
-
description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#
|
69
|
+
description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)",
|
70
70
|
type: Hash,
|
71
71
|
optional: true,
|
72
72
|
sensitive: true,
|
@@ -116,7 +116,8 @@ module Snapshot
|
|
116
116
|
device_udid = TestCommandGenerator.device_udid(device_type)
|
117
117
|
|
118
118
|
UI.message("Launch Simulator #{device_type}")
|
119
|
-
|
119
|
+
# Boot the simulator and wait for it to finish booting
|
120
|
+
Helper.backticks("xcrun simctl bootstatus #{device_udid} -b &> /dev/null")
|
120
121
|
|
121
122
|
UI.message("Overriding Status Bar")
|
122
123
|
|
@@ -208,7 +208,13 @@ module Spaceship
|
|
208
208
|
# Overridden from Spaceship::Client
|
209
209
|
def handle_error(response)
|
210
210
|
body = response.body.empty? ? {} : response.body
|
211
|
-
|
211
|
+
|
212
|
+
# Setting body nil if invalid JSON which can happen if 502
|
213
|
+
begin
|
214
|
+
body = JSON.parse(body) if body.kind_of?(String)
|
215
|
+
rescue
|
216
|
+
nil
|
217
|
+
end
|
212
218
|
|
213
219
|
case response.status.to_i
|
214
220
|
when 401
|
@@ -221,6 +227,14 @@ module Spaceship
|
|
221
227
|
else
|
222
228
|
raise AccessForbiddenError, format_errors(response)
|
223
229
|
end
|
230
|
+
when 502
|
231
|
+
# Issue - https://github.com/fastlane/fastlane/issues/19264
|
232
|
+
# This 502 with "Could not process this request" body sometimes
|
233
|
+
# work and sometimes doesn't
|
234
|
+
# Usually retrying once or twice will solve the issue
|
235
|
+
if body && body.include?("Could not process this request")
|
236
|
+
raise BadGatewayError, "Could not process this request"
|
237
|
+
end
|
224
238
|
end
|
225
239
|
end
|
226
240
|
|
@@ -385,11 +385,12 @@ module Spaceship
|
|
385
385
|
return resps.flat_map(&:to_models)
|
386
386
|
end
|
387
387
|
|
388
|
-
def create_beta_group(client: nil, group_name: nil, public_link_enabled: false, public_link_limit: 10_000, public_link_limit_enabled: false)
|
388
|
+
def create_beta_group(client: nil, group_name: nil, is_internal_group: false, public_link_enabled: false, public_link_limit: 10_000, public_link_limit_enabled: false)
|
389
389
|
client ||= Spaceship::ConnectAPI
|
390
390
|
resps = client.create_beta_group(
|
391
391
|
app_id: id,
|
392
392
|
group_name: group_name,
|
393
|
+
is_internal_group: is_internal_group,
|
393
394
|
public_link_enabled: public_link_enabled,
|
394
395
|
public_link_limit: public_link_limit,
|
395
396
|
public_link_limit_enabled: public_link_limit_enabled
|
@@ -112,7 +112,7 @@ module Spaceship
|
|
112
112
|
|
113
113
|
# @deprecated
|
114
114
|
def fetch_age_rating_declaration(client: nil)
|
115
|
-
raise 'AppStoreVersion no longer as
|
115
|
+
raise 'AppStoreVersion no longer as AgeRatingDeclaration as of App Store Connect API 1.3 - Use AppInfo instead'
|
116
116
|
end
|
117
117
|
|
118
118
|
#
|
@@ -86,6 +86,10 @@ module Spaceship
|
|
86
86
|
return build_beta_detail.nil? == false && build_beta_detail.ready_for_internal_testing?
|
87
87
|
end
|
88
88
|
|
89
|
+
def ready_for_external_testing?
|
90
|
+
return build_beta_detail.nil? == false && build_beta_detail.ready_for_external_testing?
|
91
|
+
end
|
92
|
+
|
89
93
|
def ready_for_beta_submission?
|
90
94
|
raise "No build_beta_detail included" unless build_beta_detail
|
91
95
|
return build_beta_detail.ready_for_beta_submission?
|
@@ -53,6 +53,10 @@ module Spaceship
|
|
53
53
|
return internal_build_state == InternalState::READY_FOR_BETA_TESTING
|
54
54
|
end
|
55
55
|
|
56
|
+
def processed?
|
57
|
+
return internal_build_state != InternalState::PROCESSING && external_build_state != ExternalState::PROCESSING
|
58
|
+
end
|
59
|
+
|
56
60
|
def ready_for_beta_submission?
|
57
61
|
return external_build_state == ExternalState::READY_FOR_BETA_SUBMISSION
|
58
62
|
end
|
@@ -204,11 +204,13 @@ module Spaceship
|
|
204
204
|
test_flight_request_client.delete("builds/#{build_id}/relationships/betaGroups", nil, body)
|
205
205
|
end
|
206
206
|
|
207
|
-
def create_beta_group(app_id: nil, group_name: nil, public_link_enabled: false, public_link_limit: 10_000, public_link_limit_enabled: false)
|
207
|
+
def create_beta_group(app_id: nil, group_name: nil, is_internal_group: false, public_link_enabled: false, public_link_limit: 10_000, public_link_limit_enabled: false)
|
208
208
|
body = {
|
209
209
|
data: {
|
210
210
|
attributes: {
|
211
211
|
name: group_name,
|
212
|
+
isInternalGroup: is_internal_group,
|
213
|
+
hasAccessToAllBuilds: is_internal_group ? true : false, # Undocumented of 2021-08-02 in ASC API docs and ASC Open API spec. This is the default behavior on App Store Connect and does work with both Apple ID and API Token
|
212
214
|
publicLinkEnabled: public_link_enabled,
|
213
215
|
publicLinkLimit: public_link_limit,
|
214
216
|
publicLinkLimitEnabled: public_link_limit_enabled
|
@@ -218,11 +220,11 @@ module Spaceship
|
|
218
220
|
data: {
|
219
221
|
id: app_id,
|
220
222
|
type: "apps"
|
221
|
-
}
|
222
|
-
}
|
223
|
+
},
|
224
|
+
},
|
223
225
|
},
|
224
|
-
type: "betaGroups"
|
225
|
-
}
|
226
|
+
type: "betaGroups",
|
227
|
+
},
|
226
228
|
}
|
227
229
|
test_flight_request_client.post("betaGroups", body)
|
228
230
|
end
|
@@ -21,6 +21,8 @@ module Spaceship
|
|
21
21
|
attr_reader :duration
|
22
22
|
attr_reader :expiration
|
23
23
|
|
24
|
+
attr_reader :key_raw
|
25
|
+
|
24
26
|
# Temporary attribute not needed to create the JWT text
|
25
27
|
# There is no way to determine if the team associated with this
|
26
28
|
# key is for App Store or Enterprise so this is the temporary workaround
|
data/supply/lib/supply/client.rb
CHANGED
@@ -163,11 +163,44 @@ module Supply
|
|
163
163
|
ensure_active_edit!
|
164
164
|
|
165
165
|
call_google_api do
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
166
|
+
begin
|
167
|
+
client.commit_edit(
|
168
|
+
current_package_name,
|
169
|
+
current_edit.id,
|
170
|
+
changes_not_sent_for_review: Supply.config[:changes_not_sent_for_review]
|
171
|
+
)
|
172
|
+
rescue Google::Apis::ClientError => e
|
173
|
+
unless Supply.config[:rescue_changes_not_sent_for_review]
|
174
|
+
raise
|
175
|
+
end
|
176
|
+
|
177
|
+
error = begin
|
178
|
+
JSON.parse(e.body)
|
179
|
+
rescue
|
180
|
+
nil
|
181
|
+
end
|
182
|
+
|
183
|
+
if error
|
184
|
+
message = error["error"] && error["error"]["message"]
|
185
|
+
else
|
186
|
+
message = e.body
|
187
|
+
end
|
188
|
+
|
189
|
+
if message.include?("The query parameter changesNotSentForReview must not be set")
|
190
|
+
client.commit_edit(
|
191
|
+
current_package_name,
|
192
|
+
current_edit.id
|
193
|
+
)
|
194
|
+
elsif message.include?("Please set the query parameter changesNotSentForReview to true")
|
195
|
+
client.commit_edit(
|
196
|
+
current_package_name,
|
197
|
+
current_edit.id,
|
198
|
+
changes_not_sent_for_review: true
|
199
|
+
)
|
200
|
+
else
|
201
|
+
raise
|
202
|
+
end
|
203
|
+
end
|
171
204
|
end
|
172
205
|
|
173
206
|
self.current_edit = nil
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# rubocop:disable Metrics/ClassLength
|
2
|
+
|
1
3
|
require 'fastlane_core/configuration/config_item'
|
2
4
|
require 'credentials_manager/appfile_config'
|
3
5
|
|
@@ -286,6 +288,11 @@ module Supply
|
|
286
288
|
description: "Indicates that the changes in this edit will not be reviewed until they are explicitly sent for review from the Google Play Console UI",
|
287
289
|
type: Boolean,
|
288
290
|
default_value: false),
|
291
|
+
FastlaneCore::ConfigItem.new(key: :rescue_changes_not_sent_for_review,
|
292
|
+
env_name: "SUPPLY_RESCUE_CHANGES_NOT_SENT_FOR_REVIEW",
|
293
|
+
description: "Catches changes_not_sent_for_review errors when an edit is committed and retries with the configuration that the error message recommended",
|
294
|
+
type: Boolean,
|
295
|
+
default_value: true),
|
289
296
|
FastlaneCore::ConfigItem.new(key: :in_app_update_priority,
|
290
297
|
env_name: "SUPPLY_IN_APP_UPDATE_PRIORITY",
|
291
298
|
optional: true,
|
@@ -13,6 +13,8 @@ module Supply
|
|
13
13
|
apk_version_codes.concat(upload_bundles) unless Supply.config[:skip_upload_aab]
|
14
14
|
upload_mapping(apk_version_codes)
|
15
15
|
|
16
|
+
track_to_update = Supply.config[:track]
|
17
|
+
|
16
18
|
apk_version_codes.concat(Supply.config[:version_codes_to_retain]) if Supply.config[:version_codes_to_retain]
|
17
19
|
|
18
20
|
if !apk_version_codes.empty?
|
@@ -23,13 +25,14 @@ module Supply
|
|
23
25
|
else
|
24
26
|
# Only promote or rollout if we don't have version codes
|
25
27
|
if Supply.config[:track_promote_to]
|
28
|
+
track_to_update = Supply.config[:track_promote_to]
|
26
29
|
promote_track
|
27
30
|
elsif !Supply.config[:rollout].nil? && Supply.config[:track].to_s != ""
|
28
31
|
update_rollout
|
29
32
|
end
|
30
33
|
end
|
31
34
|
|
32
|
-
perform_upload_meta(apk_version_codes)
|
35
|
+
perform_upload_meta(apk_version_codes, track_to_update)
|
33
36
|
|
34
37
|
if Supply.config[:validate_only]
|
35
38
|
UI.message("Validating all changes with Google Play...")
|
@@ -70,7 +73,7 @@ module Supply
|
|
70
73
|
end
|
71
74
|
end
|
72
75
|
|
73
|
-
def perform_upload_meta(version_codes)
|
76
|
+
def perform_upload_meta(version_codes, track_name)
|
74
77
|
if (!Supply.config[:skip_upload_metadata] || !Supply.config[:skip_upload_images] || !Supply.config[:skip_upload_changelogs] || !Supply.config[:skip_upload_screenshots]) && metadata_path
|
75
78
|
# Use version code from config if version codes is empty and no nil or empty string
|
76
79
|
version_codes = [Supply.config[:version_code]] if version_codes.empty?
|
@@ -81,7 +84,7 @@ module Supply
|
|
81
84
|
version_codes.each do |version_code|
|
82
85
|
UI.user_error!("Could not find folder #{metadata_path}") unless File.directory?(metadata_path)
|
83
86
|
|
84
|
-
track, release = fetch_track_and_release!(
|
87
|
+
track, release = fetch_track_and_release!(track_name, version_code)
|
85
88
|
UI.user_error!("Unable to find the requested track - '#{Supply.config[:track]}'") unless track
|
86
89
|
UI.user_error!("Could not find release for version code '#{version_code}' to update changelog") unless release
|
87
90
|
|
@@ -98,7 +101,7 @@ module Supply
|
|
98
101
|
release_notes << upload_changelog(language, version_code) unless Supply.config[:skip_upload_changelogs]
|
99
102
|
end
|
100
103
|
|
101
|
-
upload_changelogs(release_notes, release, track) unless release_notes.empty?
|
104
|
+
upload_changelogs(release_notes, release, track, track_name) unless release_notes.empty?
|
102
105
|
end
|
103
106
|
end
|
104
107
|
end
|
@@ -239,9 +242,9 @@ module Supply
|
|
239
242
|
)
|
240
243
|
end
|
241
244
|
|
242
|
-
def upload_changelogs(release_notes, release, track)
|
245
|
+
def upload_changelogs(release_notes, release, track, track_name)
|
243
246
|
release.release_notes = release_notes
|
244
|
-
client.upload_changelogs(track,
|
247
|
+
client.upload_changelogs(track, track_name)
|
245
248
|
end
|
246
249
|
|
247
250
|
def upload_metadata(language, listing)
|
metadata
CHANGED
@@ -1,38 +1,38 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.194.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Andrew McBurney
|
8
|
-
- Fumiya Nakamura
|
9
|
-
- Manu Wallner
|
10
|
-
- Jimmy Dee
|
11
|
-
- Satoshi Namai
|
12
7
|
- Josh Holtz
|
13
|
-
- Felix Krause
|
14
|
-
- Jérôme Lacoste
|
15
|
-
- Manish Rathi
|
16
|
-
- Kohki Miki
|
17
|
-
- Iulian Onofrei
|
18
|
-
- Matthew Ellis
|
19
|
-
- Aaron Brager
|
20
8
|
- Danielle Tomlinson
|
9
|
+
- Jorge Revuelta H
|
10
|
+
- Aaron Brager
|
11
|
+
- Kohki Miki
|
12
|
+
- Joshua Liebowitz
|
13
|
+
- Olivier Halligon
|
14
|
+
- Fumiya Nakamura
|
15
|
+
- Satoshi Namai
|
21
16
|
- Max Ott
|
17
|
+
- Helmut Januschka
|
22
18
|
- Roger Oba
|
23
|
-
-
|
19
|
+
- Felix Krause
|
24
20
|
- Maksym Grebenets
|
25
|
-
-
|
26
|
-
-
|
21
|
+
- Jérôme Lacoste
|
22
|
+
- Jimmy Dee
|
27
23
|
- Luka Mirosevic
|
28
|
-
-
|
24
|
+
- Manish Rathi
|
25
|
+
- Manu Wallner
|
26
|
+
- Andrew McBurney
|
29
27
|
- Stefan Natchev
|
30
|
-
-
|
31
|
-
-
|
28
|
+
- Daniel Jankowski
|
29
|
+
- Jan Piotrowski
|
30
|
+
- Matthew Ellis
|
31
|
+
- Iulian Onofrei
|
32
32
|
autorequire:
|
33
33
|
bindir: bin
|
34
34
|
cert_chain: []
|
35
|
-
date: 2021-
|
35
|
+
date: 2021-09-15 00:00:00.000000000 Z
|
36
36
|
dependencies:
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: xcodeproj
|
@@ -196,6 +196,20 @@ dependencies:
|
|
196
196
|
- - "~>"
|
197
197
|
- !ruby/object:Gem::Version
|
198
198
|
version: 1.0.0
|
199
|
+
- !ruby/object:Gem::Dependency
|
200
|
+
name: optparse
|
201
|
+
requirement: !ruby/object:Gem::Requirement
|
202
|
+
requirements:
|
203
|
+
- - "~>"
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: 0.1.1
|
206
|
+
type: :runtime
|
207
|
+
prerelease: false
|
208
|
+
version_requirements: !ruby/object:Gem::Requirement
|
209
|
+
requirements:
|
210
|
+
- - "~>"
|
211
|
+
- !ruby/object:Gem::Version
|
212
|
+
version: 0.1.1
|
199
213
|
- !ruby/object:Gem::Dependency
|
200
214
|
name: tty-screen
|
201
215
|
requirement: !ruby/object:Gem::Requirement
|
@@ -999,6 +1013,7 @@ files:
|
|
999
1013
|
- fastlane/lib/fastlane.rb
|
1000
1014
|
- fastlane/lib/fastlane/action.rb
|
1001
1015
|
- fastlane/lib/fastlane/action_collector.rb
|
1016
|
+
- fastlane/lib/fastlane/actions/.notarize.rb.swp
|
1002
1017
|
- fastlane/lib/fastlane/actions/README.md
|
1003
1018
|
- fastlane/lib/fastlane/actions/actions_helper.rb
|
1004
1019
|
- fastlane/lib/fastlane/actions/adb.rb
|