fastlane 2.220.0 → 2.221.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +100 -100
  3. data/deliver/lib/deliver/submit_for_review.rb +2 -2
  4. data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +2 -1
  5. data/fastlane/lib/fastlane/actions/spm.rb +7 -0
  6. data/fastlane/lib/fastlane/lane_manager_base.rb +16 -8
  7. data/fastlane/lib/fastlane/runner.rb +2 -2
  8. data/fastlane/lib/fastlane/version.rb +1 -1
  9. data/fastlane/swift/Deliverfile.swift +1 -1
  10. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  11. data/fastlane/swift/Fastlane.swift +9 -5
  12. data/fastlane/swift/Gymfile.swift +1 -1
  13. data/fastlane/swift/GymfileProtocol.swift +1 -1
  14. data/fastlane/swift/Matchfile.swift +1 -1
  15. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  16. data/fastlane/swift/Precheckfile.swift +1 -1
  17. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  18. data/fastlane/swift/Scanfile.swift +1 -1
  19. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  20. data/fastlane/swift/Screengrabfile.swift +1 -1
  21. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  22. data/fastlane/swift/Snapshotfile.swift +1 -1
  23. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  24. data/fastlane/swift/formatting/Brewfile.lock.json +19 -19
  25. data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +2 -0
  26. data/match/lib/match/runner.rb +0 -1
  27. data/pilot/lib/pilot/build_manager.rb +9 -4
  28. data/spaceship/lib/spaceship/connect_api/api_client.rb +1 -1
  29. data/spaceship/lib/spaceship/connect_api/models/app.rb +28 -33
  30. data/spaceship/lib/spaceship/connect_api/provisioning/client.rb +1 -1
  31. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +31 -22
  32. data/spaceship/lib/spaceship/connect_api/testflight/client.rb +1 -1
  33. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +47 -43
  34. data/spaceship/lib/spaceship/connect_api/token.rb +7 -2
  35. data/spaceship/lib/spaceship/connect_api/tunes/client.rb +1 -1
  36. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +96 -90
  37. data/spaceship/lib/spaceship/connect_api/users/client.rb +1 -1
  38. data/spaceship/lib/spaceship/connect_api/users/users.rb +15 -11
  39. data/spaceship/lib/spaceship/stats_middleware.rb +2 -2
  40. metadata +24 -24
@@ -4,6 +4,10 @@ module Spaceship
4
4
  class ConnectAPI
5
5
  module TestFlight
6
6
  module API
7
+ module Version
8
+ V1 = "v1"
9
+ end
10
+
7
11
  def test_flight_request_client=(test_flight_request_client)
8
12
  @test_flight_request_client = test_flight_request_client
9
13
  end
@@ -19,12 +23,12 @@ module Spaceship
19
23
 
20
24
  def get_apps(filter: {}, includes: nil, limit: nil, sort: nil)
21
25
  params = test_flight_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
22
- test_flight_request_client.get("apps", params)
26
+ test_flight_request_client.get("#{Version::V1}/apps", params)
23
27
  end
24
28
 
25
29
  def get_app(app_id: nil, includes: nil)
26
30
  params = test_flight_request_client.build_params(filter: nil, includes: includes, limit: nil, sort: nil)
27
- test_flight_request_client.get("apps/#{app_id}", params)
31
+ test_flight_request_client.get("#{Version::V1}/apps/#{app_id}", params)
28
32
  end
29
33
 
30
34
  #
@@ -33,7 +37,7 @@ module Spaceship
33
37
 
34
38
  def get_beta_app_localizations(filter: {}, includes: nil, limit: nil, sort: nil)
35
39
  params = test_flight_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
36
- test_flight_request_client.get("betaAppLocalizations", params)
40
+ test_flight_request_client.get("#{Version::V1}/betaAppLocalizations", params)
37
41
  end
38
42
 
39
43
  def post_beta_app_localizations(app_id: nil, attributes: {})
@@ -52,7 +56,7 @@ module Spaceship
52
56
  }
53
57
  }
54
58
 
55
- test_flight_request_client.post("betaAppLocalizations", body)
59
+ test_flight_request_client.post("#{Version::V1}/betaAppLocalizations", body)
56
60
  end
57
61
 
58
62
  def patch_beta_app_localizations(localization_id: nil, attributes: {})
@@ -64,7 +68,7 @@ module Spaceship
64
68
  }
65
69
  }
66
70
 
67
- test_flight_request_client.patch("betaAppLocalizations/#{localization_id}", body)
71
+ test_flight_request_client.patch("#{Version::V1}/betaAppLocalizations/#{localization_id}", body)
68
72
  end
69
73
 
70
74
  #
@@ -73,7 +77,7 @@ module Spaceship
73
77
 
74
78
  def get_beta_app_review_detail(filter: {}, includes: nil, limit: nil, sort: nil)
75
79
  params = test_flight_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
76
- test_flight_request_client.get("betaAppReviewDetails", params)
80
+ test_flight_request_client.get("#{Version::V1}/betaAppReviewDetails", params)
77
81
  end
78
82
 
79
83
  def patch_beta_app_review_detail(app_id: nil, attributes: {})
@@ -85,7 +89,7 @@ module Spaceship
85
89
  }
86
90
  }
87
91
 
88
- test_flight_request_client.patch("betaAppReviewDetails/#{app_id}", body)
92
+ test_flight_request_client.patch("#{Version::V1}/betaAppReviewDetails/#{app_id}", body)
89
93
  end
90
94
 
91
95
  #
@@ -94,7 +98,7 @@ module Spaceship
94
98
 
95
99
  def get_beta_app_review_submissions(filter: {}, includes: nil, limit: nil, sort: nil, cursor: nil)
96
100
  params = test_flight_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort, cursor: cursor)
97
- test_flight_request_client.get("betaAppReviewSubmissions", params)
101
+ test_flight_request_client.get("#{Version::V1}/betaAppReviewSubmissions", params)
98
102
  end
99
103
 
100
104
  def post_beta_app_review_submissions(build_id: nil)
@@ -112,12 +116,12 @@ module Spaceship
112
116
  }
113
117
  }
114
118
 
115
- test_flight_request_client.post("betaAppReviewSubmissions", body)
119
+ test_flight_request_client.post("#{Version::V1}/betaAppReviewSubmissions", body)
116
120
  end
117
121
 
118
122
  def delete_beta_app_review_submission(beta_app_review_submission_id: nil)
119
123
  params = test_flight_request_client.build_params(filter: nil, includes: nil, limit: nil, sort: nil, cursor: nil)
120
- test_flight_request_client.delete("betaAppReviewSubmissions/#{beta_app_review_submission_id}", params)
124
+ test_flight_request_client.delete("#{Version::V1}/betaAppReviewSubmissions/#{beta_app_review_submission_id}", params)
121
125
  end
122
126
 
123
127
  #
@@ -126,7 +130,7 @@ module Spaceship
126
130
 
127
131
  def get_beta_build_localizations(filter: {}, includes: nil, limit: nil, sort: nil)
128
132
  params = test_flight_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
129
- test_flight_request_client.get("betaBuildLocalizations", params)
133
+ test_flight_request_client.get("#{Version::V1}/betaBuildLocalizations", params)
130
134
  end
131
135
 
132
136
  def post_beta_build_localizations(build_id: nil, attributes: {})
@@ -145,7 +149,7 @@ module Spaceship
145
149
  }
146
150
  }
147
151
 
148
- test_flight_request_client.post("betaBuildLocalizations", body)
152
+ test_flight_request_client.post("#{Version::V1}/betaBuildLocalizations", body)
149
153
  end
150
154
 
151
155
  def patch_beta_build_localizations(localization_id: nil, feedbackEmail: nil, attributes: {})
@@ -157,7 +161,7 @@ module Spaceship
157
161
  }
158
162
  }
159
163
 
160
- test_flight_request_client.patch("betaBuildLocalizations/#{localization_id}", body)
164
+ test_flight_request_client.patch("#{Version::V1}/betaBuildLocalizations/#{localization_id}", body)
161
165
  end
162
166
 
163
167
  #
@@ -166,7 +170,7 @@ module Spaceship
166
170
 
167
171
  def get_beta_build_metrics(filter: {}, includes: nil, limit: nil, sort: nil)
168
172
  params = test_flight_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
169
- test_flight_request_client.get("betaBuildMetrics", params)
173
+ test_flight_request_client.get("#{Version::V1}/betaBuildMetrics", params)
170
174
  end
171
175
 
172
176
  #
@@ -175,7 +179,7 @@ module Spaceship
175
179
 
176
180
  def get_beta_groups(filter: {}, includes: nil, limit: nil, sort: nil)
177
181
  params = test_flight_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
178
- test_flight_request_client.get("betaGroups", params)
182
+ test_flight_request_client.get("#{Version::V1}/betaGroups", params)
179
183
  end
180
184
 
181
185
  def add_beta_groups_to_build(build_id: nil, beta_group_ids: [])
@@ -188,7 +192,7 @@ module Spaceship
188
192
  end
189
193
  }
190
194
 
191
- test_flight_request_client.post("builds/#{build_id}/relationships/betaGroups", body)
195
+ test_flight_request_client.post("#{Version::V1}/builds/#{build_id}/relationships/betaGroups", body)
192
196
  end
193
197
 
194
198
  def delete_beta_groups_from_build(build_id: nil, beta_group_ids: [])
@@ -201,7 +205,7 @@ module Spaceship
201
205
  end
202
206
  }
203
207
 
204
- test_flight_request_client.delete("builds/#{build_id}/relationships/betaGroups", nil, body)
208
+ test_flight_request_client.delete("#{Version::V1}/builds/#{build_id}/relationships/betaGroups", nil, body)
205
209
  end
206
210
 
207
211
  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, has_access_to_all_builds: nil)
@@ -232,7 +236,7 @@ module Spaceship
232
236
  type: "betaGroups",
233
237
  },
234
238
  }
235
- test_flight_request_client.post("betaGroups", body)
239
+ test_flight_request_client.post("#{Version::V1}/betaGroups", body)
236
240
  end
237
241
 
238
242
  def patch_group(group_id: nil, attributes: {})
@@ -244,19 +248,19 @@ module Spaceship
244
248
  }
245
249
  }
246
250
 
247
- test_flight_request_client.patch("betaGroups/#{group_id}", body)
251
+ test_flight_request_client.patch("#{Version::V1}/betaGroups/#{group_id}", body)
248
252
  end
249
253
 
250
254
  def delete_beta_group(group_id: nil)
251
255
  raise "group_id is nil" if group_id.nil?
252
256
 
253
- test_flight_request_client.delete("betaGroups/#{group_id}")
257
+ test_flight_request_client.delete("#{Version::V1}/betaGroups/#{group_id}")
254
258
  end
255
259
 
256
260
  def get_builds_for_beta_group(group_id: nil)
257
261
  raise "group_id is nil" if group_id.nil?
258
262
 
259
- test_flight_request_client.get("betaGroups/#{group_id}/builds")
263
+ test_flight_request_client.get("#{Version::V1}/betaGroups/#{group_id}/builds")
260
264
  end
261
265
 
262
266
  #
@@ -265,7 +269,7 @@ module Spaceship
265
269
 
266
270
  def get_beta_testers(filter: {}, includes: nil, limit: nil, sort: nil)
267
271
  params = test_flight_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
268
- test_flight_request_client.get("betaTesters", params)
272
+ test_flight_request_client.get("#{Version::V1}/betaTesters", params)
269
273
  end
270
274
 
271
275
  # beta_testers - [{email: "", firstName: "", lastName: ""}]
@@ -293,7 +297,7 @@ module Spaceship
293
297
  }
294
298
  }
295
299
 
296
- test_flight_request_client.post("bulkBetaTesterAssignments", body)
300
+ test_flight_request_client.post("#{Version::V1}/bulkBetaTesterAssignments", body)
297
301
  end
298
302
 
299
303
  # attributes - {email: "", firstName: "", lastName: ""}
@@ -315,7 +319,7 @@ module Spaceship
315
319
  }
316
320
  }
317
321
 
318
- test_flight_request_client.post("betaTesters", body)
322
+ test_flight_request_client.post("#{Version::V1}/betaTesters", body)
319
323
  end
320
324
 
321
325
  def add_beta_tester_to_group(beta_group_id: nil, beta_tester_ids: nil)
@@ -328,7 +332,7 @@ module Spaceship
328
332
  }
329
333
  end
330
334
  }
331
- test_flight_request_client.post("betaGroups/#{beta_group_id}/relationships/betaTesters", body)
335
+ test_flight_request_client.post("#{Version::V1}/betaGroups/#{beta_group_id}/relationships/betaTesters", body)
332
336
  end
333
337
 
334
338
  def delete_beta_tester_from_apps(beta_tester_id: nil, app_ids: [])
@@ -341,7 +345,7 @@ module Spaceship
341
345
  end
342
346
  }
343
347
 
344
- test_flight_request_client.delete("betaTesters/#{beta_tester_id}/relationships/apps", nil, body)
348
+ test_flight_request_client.delete("#{Version::V1}/betaTesters/#{beta_tester_id}/relationships/apps", nil, body)
345
349
  end
346
350
 
347
351
  def delete_beta_tester_from_beta_groups(beta_tester_id: nil, beta_group_ids: [])
@@ -354,7 +358,7 @@ module Spaceship
354
358
  end
355
359
  }
356
360
 
357
- test_flight_request_client.delete("betaTesters/#{beta_tester_id}/relationships/betaGroups", nil, body)
361
+ test_flight_request_client.delete("#{Version::V1}/betaTesters/#{beta_tester_id}/relationships/betaGroups", nil, body)
358
362
  end
359
363
 
360
364
  def delete_beta_testers_from_app(beta_tester_ids: [], app_id: nil)
@@ -367,7 +371,7 @@ module Spaceship
367
371
  end
368
372
  }
369
373
 
370
- test_flight_request_client.delete("apps/#{app_id}/relationships/betaTesters", nil, body)
374
+ test_flight_request_client.delete("#{Version::V1}/apps/#{app_id}/relationships/betaTesters", nil, body)
371
375
  end
372
376
 
373
377
  def add_beta_tester_to_builds(beta_tester_id: nil, build_ids: [])
@@ -380,7 +384,7 @@ module Spaceship
380
384
  end
381
385
  }
382
386
 
383
- test_flight_request_client.post("betaTesters/#{beta_tester_id}/relationships/builds", body)
387
+ test_flight_request_client.post("#{Version::V1}/betaTesters/#{beta_tester_id}/relationships/builds", body)
384
388
  end
385
389
 
386
390
  def add_beta_testers_to_build(build_id: nil, beta_tester_ids: [])
@@ -393,7 +397,7 @@ module Spaceship
393
397
  end
394
398
  }
395
399
 
396
- test_flight_request_client.post("builds/#{build_id}/relationships/individualTesters", body)
400
+ test_flight_request_client.post("#{Version::V1}/builds/#{build_id}/relationships/individualTesters", body)
397
401
  end
398
402
 
399
403
  def delete_beta_testers_from_build(build_id: nil, beta_tester_ids: [])
@@ -406,7 +410,7 @@ module Spaceship
406
410
  end
407
411
  }
408
412
 
409
- test_flight_request_client.delete("builds/#{build_id}/relationships/individualTesters", nil, body)
413
+ test_flight_request_client.delete("#{Version::V1}/builds/#{build_id}/relationships/individualTesters", nil, body)
410
414
  end
411
415
 
412
416
  #
@@ -415,7 +419,7 @@ module Spaceship
415
419
 
416
420
  def get_beta_tester_metrics(filter: {}, includes: nil, limit: nil, sort: nil)
417
421
  params = test_flight_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
418
- test_flight_request_client.get("betaTesterMetrics", params)
422
+ test_flight_request_client.get("#{Version::V1}/betaTesterMetrics", params)
419
423
  end
420
424
 
421
425
  #
@@ -424,7 +428,7 @@ module Spaceship
424
428
 
425
429
  def get_build_bundles_build_bundle_file_sizes(build_bundle_id:, limit: nil)
426
430
  params = test_flight_request_client.build_params(filter: nil, includes: nil, limit: limit, sort: nil, cursor: nil)
427
- test_flight_request_client.get("buildBundles/#{build_bundle_id}/buildBundleFileSizes", params)
431
+ test_flight_request_client.get("#{Version::V1}/buildBundles/#{build_bundle_id}/buildBundleFileSizes", params)
428
432
  end
429
433
 
430
434
  #
@@ -433,16 +437,16 @@ module Spaceship
433
437
 
434
438
  def get_builds(filter: {}, includes: "buildBetaDetail,betaBuildMetrics", limit: 10, sort: "uploadedDate", cursor: nil)
435
439
  params = test_flight_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort, cursor: cursor)
436
- test_flight_request_client.get("builds", params)
440
+ test_flight_request_client.get("#{Version::V1}/builds", params)
437
441
  end
438
442
 
439
443
  def get_build(build_id: nil, app_store_version_id: nil, includes: nil)
440
444
  if build_id
441
445
  params = test_flight_request_client.build_params(filter: nil, includes: includes, limit: nil, sort: nil, cursor: nil)
442
- return test_flight_request_client.get("builds/#{build_id}", params)
446
+ return test_flight_request_client.get("#{Version::V1}/builds/#{build_id}", params)
443
447
  elsif app_store_version_id
444
448
  params = test_flight_request_client.build_params(filter: nil, includes: includes, limit: nil, sort: nil, cursor: nil)
445
- return test_flight_request_client.get("appStoreVersions/#{app_store_version_id}/build", params)
449
+ return test_flight_request_client.get("#{Version::V1}/appStoreVersions/#{app_store_version_id}/build", params)
446
450
  else
447
451
  return nil
448
452
  end
@@ -457,7 +461,7 @@ module Spaceship
457
461
  }
458
462
  }
459
463
 
460
- test_flight_request_client.patch("builds/#{build_id}", body)
464
+ test_flight_request_client.patch("#{Version::V1}/builds/#{build_id}", body)
461
465
  end
462
466
 
463
467
  #
@@ -466,7 +470,7 @@ module Spaceship
466
470
 
467
471
  def get_build_beta_details(filter: {}, includes: nil, limit: nil, sort: nil)
468
472
  params = test_flight_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
469
- test_flight_request_client.get("buildBetaDetails", params)
473
+ test_flight_request_client.get("#{Version::V1}/buildBetaDetails", params)
470
474
  end
471
475
 
472
476
  def patch_build_beta_details(build_beta_details_id: nil, attributes: {})
@@ -478,7 +482,7 @@ module Spaceship
478
482
  }
479
483
  }
480
484
 
481
- test_flight_request_client.patch("buildBetaDetails/#{build_beta_details_id}", body)
485
+ test_flight_request_client.patch("#{Version::V1}/buildBetaDetails/#{build_beta_details_id}", body)
482
486
  end
483
487
 
484
488
  #
@@ -487,7 +491,7 @@ module Spaceship
487
491
 
488
492
  def get_build_deliveries(app_id:, filter: {}, includes: nil, limit: nil, sort: nil)
489
493
  params = test_flight_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
490
- test_flight_request_client.get("apps/#{app_id}/buildDeliveries", params)
494
+ test_flight_request_client.get("#{Version::V1}/apps/#{app_id}/buildDeliveries", params)
491
495
  end
492
496
 
493
497
  #
@@ -496,7 +500,7 @@ module Spaceship
496
500
 
497
501
  def get_pre_release_versions(filter: {}, includes: nil, limit: nil, sort: nil)
498
502
  params = test_flight_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
499
- test_flight_request_client.get("preReleaseVersions", params)
503
+ test_flight_request_client.get("#{Version::V1}/preReleaseVersions", params)
500
504
  end
501
505
 
502
506
  #
@@ -505,13 +509,13 @@ module Spaceship
505
509
 
506
510
  def get_beta_feedback(filter: {}, includes: nil, limit: nil, sort: nil)
507
511
  params = test_flight_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
508
- test_flight_request_client.get("betaFeedbacks", params)
512
+ test_flight_request_client.get("#{Version::V1}/betaFeedbacks", params)
509
513
  end
510
514
 
511
515
  def delete_beta_feedback(feedback_id: nil)
512
516
  raise "Feedback id is nil" if feedback_id.nil?
513
517
 
514
- test_flight_request_client.delete("betaFeedbacks/#{feedback_id}")
518
+ test_flight_request_client.delete("#{Version::V1}/betaFeedbacks/#{feedback_id}")
515
519
  end
516
520
  end
517
521
  end
@@ -39,7 +39,6 @@ module Spaceship
39
39
 
40
40
  missing_keys = []
41
41
  missing_keys << 'key_id' unless json.key?(:key_id)
42
- missing_keys << 'issuer_id' unless json.key?(:issuer_id)
43
42
  missing_keys << 'key' unless json.key?(:key)
44
43
 
45
44
  unless missing_keys.empty?
@@ -99,12 +98,18 @@ module Spaceship
99
98
  }
100
99
 
101
100
  payload = {
102
- iss: issuer_id,
103
101
  # Reduce the issued-at-time in case our time is slighly ahead of Apple's servers, which causes the token to be rejected.
104
102
  iat: now.to_i - 60,
105
103
  exp: @expiration.to_i,
106
104
  aud: 'appstoreconnect-v1'
107
105
  }
106
+ if issuer_id
107
+ payload[:iss] = issuer_id
108
+ else
109
+ # Consider the key as individual key.
110
+ # https://developer.apple.com/documentation/appstoreconnectapi/generating_tokens_for_api_requests#4313913
111
+ payload[:sub] = 'user'
112
+ end
108
113
 
109
114
  @text = JWT.encode(payload, @key, 'ES256', header)
110
115
  end
@@ -19,7 +19,7 @@ module Spaceship
19
19
  end
20
20
 
21
21
  def self.hostname
22
- 'https://appstoreconnect.apple.com/iris/v1/'
22
+ 'https://appstoreconnect.apple.com/iris/'
23
23
  end
24
24
  end
25
25
  end