fastlane 2.162.0 → 2.167.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +78 -78
  3. data/cert/lib/cert/runner.rb +2 -2
  4. data/deliver/lib/deliver/app_screenshot.rb +6 -2
  5. data/deliver/lib/deliver/module.rb +2 -0
  6. data/deliver/lib/deliver/options.rb +3 -3
  7. data/deliver/lib/deliver/queue_worker.rb +14 -29
  8. data/deliver/lib/deliver/upload_metadata.rb +19 -5
  9. data/deliver/lib/deliver/upload_screenshots.rb +3 -5
  10. data/fastlane/lib/fastlane/actions/.download_dsyms.rb.swp +0 -0
  11. data/fastlane/lib/fastlane/actions/actions_helper.rb +1 -1
  12. data/fastlane/lib/fastlane/actions/add_git_tag.rb +9 -2
  13. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +39 -3
  14. data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +9 -0
  15. data/fastlane/lib/fastlane/actions/appledoc.rb +1 -1
  16. data/fastlane/lib/fastlane/actions/check_app_store_metadata.rb +1 -0
  17. data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +5 -1
  18. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +9 -0
  19. data/fastlane/lib/fastlane/actions/get_certificates.rb +1 -0
  20. data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +1 -0
  21. data/fastlane/lib/fastlane/actions/import_from_git.rb +9 -1
  22. data/fastlane/lib/fastlane/actions/is_ci.rb +1 -1
  23. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +15 -0
  24. data/fastlane/lib/fastlane/actions/register_device.rb +46 -5
  25. data/fastlane/lib/fastlane/actions/register_devices.rb +50 -16
  26. data/fastlane/lib/fastlane/actions/set_changelog.rb +31 -3
  27. data/fastlane/lib/fastlane/actions/spm.rb +6 -0
  28. data/fastlane/lib/fastlane/actions/sync_code_signing.rb +1 -0
  29. data/fastlane/lib/fastlane/actions/update_fastlane.rb +29 -8
  30. data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +3 -2
  31. data/fastlane/lib/fastlane/cli_tools_distributor.rb +2 -2
  32. data/fastlane/lib/fastlane/fast_file.rb +74 -23
  33. data/fastlane/lib/fastlane/features.rb +1 -1
  34. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +2 -0
  35. data/fastlane/lib/fastlane/swift_fastlane_function.rb +1 -1
  36. data/fastlane/lib/fastlane/version.rb +1 -1
  37. data/fastlane/swift/Deliverfile.swift +1 -1
  38. data/fastlane/swift/DeliverfileProtocol.swift +4 -4
  39. data/fastlane/swift/Fastfile.swift +1 -1
  40. data/fastlane/swift/Fastlane.swift +73 -22
  41. data/fastlane/swift/Gymfile.swift +1 -1
  42. data/fastlane/swift/GymfileProtocol.swift +1 -1
  43. data/fastlane/swift/LaneFileProtocol.swift +15 -19
  44. data/fastlane/swift/MainProcess.swift +3 -1
  45. data/fastlane/swift/Matchfile.swift +1 -1
  46. data/fastlane/swift/MatchfileProtocol.swift +6 -2
  47. data/fastlane/swift/Precheckfile.swift +1 -1
  48. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  49. data/fastlane/swift/Runner.swift +1 -1
  50. data/fastlane/swift/Scanfile.swift +1 -1
  51. data/fastlane/swift/ScanfileProtocol.swift +5 -1
  52. data/fastlane/swift/Screengrabfile.swift +1 -1
  53. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  54. data/fastlane/swift/Snapshotfile.swift +1 -1
  55. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  56. data/fastlane/swift/SocketClient.swift +1 -1
  57. data/fastlane/swift/main.swift +1 -1
  58. data/fastlane_core/lib/fastlane_core/cert_checker.rb +12 -7
  59. data/fastlane_core/lib/fastlane_core/device_manager.rb +8 -4
  60. data/fastlane_core/lib/fastlane_core/helper.rb +10 -2
  61. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +3 -3
  62. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +1 -1
  63. data/fastlane_core/lib/fastlane_core/provisioning_profile.rb +3 -1
  64. data/fastlane_core/lib/fastlane_core/ui/disable_colors.rb +8 -0
  65. data/gym/lib/gym/code_signing_mapping.rb +1 -1
  66. data/gym/lib/gym/generators/package_command_generator_xcode7.rb +2 -2
  67. data/match/lib/match/importer.rb +33 -21
  68. data/match/lib/match/nuke.rb +9 -5
  69. data/match/lib/match/options.rb +7 -1
  70. data/pilot/lib/pilot/build_manager.rb +9 -3
  71. data/scan/lib/scan/detect_values.rb +8 -9
  72. data/scan/lib/scan/module.rb +4 -0
  73. data/scan/lib/scan/options.rb +9 -0
  74. data/scan/lib/scan/runner.rb +2 -1
  75. data/sigh/lib/assets/resign.sh +1 -1
  76. data/sigh/lib/sigh/download_all.rb +16 -4
  77. data/sigh/lib/sigh/runner.rb +4 -4
  78. data/snapshot/lib/assets/SnapshotHelper.swift +4 -0
  79. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +2 -1
  80. data/snapshot/lib/snapshot/test_command_generator.rb +1 -1
  81. data/snapshot/lib/snapshot/test_command_generator_base.rb +3 -1
  82. data/snapshot/lib/snapshot/test_command_generator_xcode_8.rb +1 -1
  83. data/spaceship/lib/spaceship/client.rb +7 -3
  84. data/spaceship/lib/spaceship/connect_api.rb +26 -0
  85. data/spaceship/lib/spaceship/connect_api/api_client.rb +9 -0
  86. data/spaceship/lib/spaceship/connect_api/client.rb +7 -4
  87. data/spaceship/lib/spaceship/connect_api/models/app.rb +51 -0
  88. data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +9 -0
  89. data/spaceship/lib/spaceship/connect_api/models/custom_app_organization.rb +43 -0
  90. data/spaceship/lib/spaceship/connect_api/models/custom_app_user.rb +41 -0
  91. data/spaceship/lib/spaceship/connect_api/models/device.rb +5 -0
  92. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +17 -0
  93. data/spaceship/lib/spaceship/connect_api/spaceship.rb +7 -4
  94. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +12 -0
  95. data/spaceship/lib/spaceship/connect_api/token.rb +6 -1
  96. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +71 -0
  97. data/supply/lib/supply.rb +1 -1
  98. data/supply/lib/supply/uploader.rb +1 -1
  99. metadata +21 -18
@@ -13,20 +13,23 @@ module Spaceship
13
13
 
14
14
  # Initializes client with Apple's App Store Connect JWT auth key.
15
15
  #
16
- # This method will automatically use the key id, issuer id, and filepath from environment
16
+ # This method will automatically use the arguments from environment
17
17
  # variables if not given.
18
18
  #
19
- # All three parameters are needed to authenticate.
19
+ # The key_id, issuer_id and either filepath or key are needed to authenticate.
20
20
  #
21
21
  # @param key_id (String) (optional): The key id
22
22
  # @param issuer_id (String) (optional): The issuer id
23
23
  # @param filepath (String) (optional): The filepath
24
+ # @param key (String) (optional): The key
25
+ # @param duration (Integer) (optional): How long this session should last
26
+ # @param in_house (Boolean) (optional): Whether this session is an Enterprise one
24
27
  #
25
28
  # @raise InvalidUserCredentialsError: raised if authentication failed
26
29
  #
27
30
  # @return (Spaceship::ConnectAPI::Client) The client the login method was called for
28
- def self.auth(key_id: nil, issuer_id: nil, filepath: nil)
29
- token = Spaceship::ConnectAPI::Token.create(key_id: key_id, issuer_id: issuer_id, filepath: filepath)
31
+ def self.auth(key_id: nil, issuer_id: nil, filepath: nil, key: nil, duration: nil, in_house: nil)
32
+ token = Spaceship::ConnectAPI::Token.create(key_id: key_id, issuer_id: issuer_id, filepath: filepath, key: key, duration: duration, in_house: in_house)
30
33
  return ConnectAPI::Client.new(token: token)
31
34
  end
32
35
 
@@ -18,11 +18,26 @@ module Spaceship
18
18
  attr_accessor :app_store_versions
19
19
  attr_accessor :prices
20
20
 
21
+ # Only available with Apple ID auth
22
+ attr_accessor :distribution_type
23
+ attr_accessor :educationDiscountType
24
+
21
25
  module ContentRightsDeclaration
22
26
  USES_THIRD_PARTY_CONTENT = "USES_THIRD_PARTY_CONTENT"
23
27
  DOES_NOT_USE_THIRD_PARTY_CONTENT = "DOES_NOT_USE_THIRD_PARTY_CONTENT"
24
28
  end
25
29
 
30
+ module DistributionType
31
+ APP_STORE = "APP_STORE"
32
+ CUSTOM = "CUSTOM"
33
+ end
34
+
35
+ module EducationDiscountType
36
+ DISCOUNTED = "DISCOUNTED"
37
+ NOT_APPLICABLE = "NOT_APPLICABLE"
38
+ NOT_DISCOUNTED = "NOT_DISCOUNTED"
39
+ end
40
+
26
41
  self.attr_mapping({
27
42
  "name" => "name",
28
43
  "bundleId" => "bundle_id",
@@ -32,6 +47,8 @@ module Spaceship
32
47
  "removed" => "removed",
33
48
  "isAAG" => "is_aag",
34
49
  "availableInNewTerritories" => "available_in_new_territories",
50
+ "distributionType" => "distribution_type",
51
+ "educationDiscountType" => "education_discount_type",
35
52
 
36
53
  "contentRightsDeclaration" => "content_rights_declaration",
37
54
 
@@ -252,6 +269,24 @@ module Spaceship
252
269
  return resps.flat_map(&:to_models)
253
270
  end
254
271
 
272
+ #
273
+ # B2B
274
+ #
275
+
276
+ def disable_b2b
277
+ update(attributes: {
278
+ distributionType: DistributionType::APP_STORE,
279
+ education_discount_type: EducationDiscountType::NOT_DISCOUNTED
280
+ })
281
+ end
282
+
283
+ def enable_b2b
284
+ update(attributes: {
285
+ distributionType: App::DistributionType::CUSTOM,
286
+ education_discount_type: EducationDiscountType::NOT_APPLICABLE
287
+ })
288
+ end
289
+
255
290
  #
256
291
  # Beta Feedback
257
292
  #
@@ -323,6 +358,22 @@ module Spaceship
323
358
  return resps.flat_map(&:to_models).first
324
359
  end
325
360
 
361
+ #
362
+ # Education
363
+ #
364
+
365
+ def disable_educational_discount
366
+ update(attributes: {
367
+ education_discount_type: EducationDiscountType::NOT_DISCOUNTED
368
+ })
369
+ end
370
+
371
+ def enable_educational_discount
372
+ update(attributes: {
373
+ education_discount_type: EducationDiscountType::DISCOUNTED
374
+ })
375
+ end
376
+
326
377
  #
327
378
  # Users
328
379
  #
@@ -36,6 +36,15 @@ module Spaceship
36
36
  def post_bulk_beta_tester_assignments(beta_testers: nil)
37
37
  return Spaceship::ConnectAPI.post_bulk_beta_tester_assignments(beta_group_id: id, beta_testers: beta_testers)
38
38
  end
39
+
40
+ def delete!
41
+ return Spaceship::ConnectAPI.delete_beta_group(group_id: id)
42
+ end
43
+
44
+ def fetch_builds
45
+ resps = Spaceship::ConnectAPI.get_builds_for_beta_group(group_id: id).all_pages
46
+ return resps.flat_map(&:to_models)
47
+ end
39
48
  end
40
49
  end
41
50
  end
@@ -0,0 +1,43 @@
1
+ require_relative '../model'
2
+ module Spaceship
3
+ class ConnectAPI
4
+ class CustomAppOrganization
5
+ include Spaceship::ConnectAPI::Model
6
+
7
+ attr_accessor :device_enrollment_program_id
8
+ attr_accessor :name
9
+
10
+ attr_mapping({
11
+ "deviceEnrollmentProgramId" => "device_enrollment_program_id",
12
+ "name" => "name"
13
+ })
14
+
15
+ def self.type
16
+ return "customAppOrganizations"
17
+ end
18
+
19
+ #
20
+ # API
21
+ #
22
+
23
+ def self.all(app_id: nil, filter: {}, includes: nil, limit: nil, sort: nil)
24
+ resps = Spaceship::ConnectAPI.get_custom_app_organization(
25
+ app_id: app_id,
26
+ filter: filter,
27
+ includes: includes,
28
+ limit: nil,
29
+ sort: nil
30
+ ).all_pages
31
+ return resps.flat_map(&:to_models)
32
+ end
33
+
34
+ def self.create(app_id: nil, device_enrollment_program_id: nil, name: nil)
35
+ return Spaceship::ConnectAPI.post_custom_app_organization(app_id: app_id, device_enrollment_program_id: device_enrollment_program_id, name: name).first
36
+ end
37
+
38
+ def delete!
39
+ Spaceship::ConnectAPI.delete_custom_app_organization(custom_app_organization_id: id)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,41 @@
1
+ require_relative '../model'
2
+ module Spaceship
3
+ class ConnectAPI
4
+ class CustomAppUser
5
+ include Spaceship::ConnectAPI::Model
6
+
7
+ attr_accessor :apple_id
8
+
9
+ attr_mapping({
10
+ "appleId" => "apple_id"
11
+ })
12
+
13
+ def self.type
14
+ return "customAppUsers"
15
+ end
16
+
17
+ #
18
+ # API
19
+ #
20
+
21
+ def self.all(app_id: nil, filter: {}, includes: nil, limit: nil, sort: nil)
22
+ resps = Spaceship::ConnectAPI.get_custom_app_users(
23
+ app_id: app_id,
24
+ filter: filter,
25
+ includes: includes,
26
+ limit: nil,
27
+ sort: nil
28
+ ).all_pages
29
+ return resps.flat_map(&:to_models)
30
+ end
31
+
32
+ def self.create(app_id: nil, apple_id: nil)
33
+ return Spaceship::ConnectAPI.post_custom_app_user(app_id: app_id, apple_id: apple_id).first
34
+ end
35
+
36
+ def delete!
37
+ Spaceship::ConnectAPI.delete_custom_app_user(custom_app_user_id: id)
38
+ end
39
+ end
40
+ end
41
+ end
@@ -48,6 +48,11 @@ module Spaceship
48
48
  resps = Spaceship::ConnectAPI.get_devices(filter: filter, includes: includes).all_pages
49
49
  return resps.flat_map(&:to_models)
50
50
  end
51
+
52
+ def self.create(name: nil, platform: nil, udid: nil)
53
+ resp = Spaceship::ConnectAPI.post_device(name: name, platform: platform, udid: udid)
54
+ return resp.to_models.first
55
+ end
51
56
  end
52
57
  end
53
58
  end
@@ -71,6 +71,23 @@ module Spaceship
71
71
  end
72
72
  end
73
73
 
74
+ def post_device(name: nil, platform: nil, udid: nil)
75
+ attributes = {
76
+ name: name,
77
+ platform: platform,
78
+ udid: udid
79
+ }
80
+
81
+ body = {
82
+ data: {
83
+ attributes: attributes,
84
+ type: "devices"
85
+ }
86
+ }
87
+
88
+ provisioning_request_client.post("devices", body)
89
+ end
90
+
74
91
  #
75
92
  # profiles
76
93
  #
@@ -44,20 +44,23 @@ module Spaceship
44
44
 
45
45
  # Initializes client with Apple's App Store Connect JWT auth key.
46
46
  #
47
- # This method will automatically use the key id, issuer id, and filepath from environment
47
+ # This method will automatically use the arguments from environment
48
48
  # variables if not given.
49
49
  #
50
- # All three parameters are needed to authenticate.
50
+ # The key_id, issuer_id and either filepath or key are needed to authenticate.
51
51
  #
52
52
  # @param key_id (String) (optional): The key id
53
53
  # @param issuer_id (String) (optional): The issuer id
54
54
  # @param filepath (String) (optional): The filepath
55
+ # @param key (String) (optional): The key
56
+ # @param duration (Integer) (optional): How long this session should last
57
+ # @param in_house (Boolean) (optional): Whether this session is an Enterprise one
55
58
  #
56
59
  # @raise InvalidUserCredentialsError: raised if authentication failed
57
60
  #
58
61
  # @return (Spaceship::ConnectAPI::Client) The client the login method was called for
59
- def auth(key_id: nil, issuer_id: nil, filepath: nil)
60
- @client = ConnectAPI::Client.auth(key_id: key_id, issuer_id: issuer_id, filepath: filepath)
62
+ def auth(key_id: nil, issuer_id: nil, filepath: nil, key: nil, duration: nil, in_house: nil)
63
+ @client = ConnectAPI::Client.auth(key_id: key_id, issuer_id: issuer_id, filepath: filepath, key: key, duration: duration, in_house: in_house)
61
64
  end
62
65
 
63
66
  # Authenticates with Apple's web services. This method has to be called once
@@ -214,6 +214,18 @@ module Spaceship
214
214
  test_flight_request_client.post("betaGroups", body)
215
215
  end
216
216
 
217
+ def delete_beta_group(group_id: nil)
218
+ raise "group_id is nil" if group_id.nil?
219
+
220
+ test_flight_request_client.delete("betaGroups/#{group_id}")
221
+ end
222
+
223
+ def get_builds_for_beta_group(group_id: nil)
224
+ raise "group_id is nil" if group_id.nil?
225
+
226
+ test_flight_request_client.get("betaGroups/#{group_id}/builds")
227
+ end
228
+
217
229
  #
218
230
  # betaTesters
219
231
  #
@@ -1,4 +1,5 @@
1
1
  require 'jwt'
2
+ require 'base64'
2
3
  require 'openssl'
3
4
 
4
5
  # extract pem from .p8
@@ -39,7 +40,7 @@ module Spaceship
39
40
  self.create(json)
40
41
  end
41
42
 
42
- def self.create(key_id: nil, issuer_id: nil, filepath: nil, key: nil, duration: nil, in_house: nil)
43
+ def self.create(key_id: nil, issuer_id: nil, filepath: nil, key: nil, is_key_content_base64: false, duration: nil, in_house: nil)
43
44
  key_id ||= ENV['SPACESHIP_CONNECT_API_KEY_ID']
44
45
  issuer_id ||= ENV['SPACESHIP_CONNECT_API_ISSUER_ID']
45
46
  filepath ||= ENV['SPACESHIP_CONNECT_API_KEY_FILEPATH']
@@ -51,6 +52,10 @@ module Spaceship
51
52
  key ||= ENV['SPACESHIP_CONNECT_API_KEY']
52
53
  key ||= File.binread(filepath)
53
54
 
55
+ if !key.nil? && is_key_content_base64
56
+ key = Base64.decode64(key)
57
+ end
58
+
54
59
  self.new(
55
60
  key_id: key_id,
56
61
  issuer_id: issuer_id,
@@ -890,6 +890,77 @@ module Spaceship
890
890
  tunes_request_client.post("appStoreVersionReleaseRequests", body)
891
891
  end
892
892
 
893
+ #
894
+ # customAppUsers
895
+ #
896
+
897
+ def get_custom_app_users(app_id: nil, filter: nil, includes: nil, limit: nil, sort: nil)
898
+ params = tunes_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
899
+ tunes_request_client.get("apps/#{app_id}/customAppUsers", params)
900
+ end
901
+
902
+ def post_custom_app_user(app_id: nil, apple_id: nil)
903
+ body = {
904
+ data: {
905
+ type: "customAppUsers",
906
+ attributes: {
907
+ appleId: apple_id
908
+ },
909
+ relationships: {
910
+ app: {
911
+ data: {
912
+ type: "apps",
913
+ id: app_id
914
+ }
915
+ }
916
+ }
917
+ }
918
+ }
919
+
920
+ tunes_request_client.post("customAppUsers", body)
921
+ end
922
+
923
+ def delete_custom_app_user(custom_app_user_id: nil)
924
+ params = tunes_request_client.build_params(filter: nil, includes: nil, limit: nil, sort: nil)
925
+ tunes_request_client.delete("customAppUsers/#{custom_app_user_id}", params)
926
+ end
927
+
928
+ #
929
+ # customOrganizationUsers
930
+ #
931
+
932
+ def get_custom_app_organization(app_id: nil, filter: nil, includes: nil, limit: nil, sort: nil)
933
+ params = tunes_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
934
+ tunes_request_client.get("apps/#{app_id}/customAppOrganizations", params)
935
+ end
936
+
937
+ def post_custom_app_organization(app_id: nil, device_enrollment_program_id: nil, name: nil)
938
+ body = {
939
+ data: {
940
+ type: "customAppOrganizations",
941
+ attributes: {
942
+ deviceEnrollmentProgramId: device_enrollment_program_id,
943
+ name: name
944
+ },
945
+ relationships: {
946
+ app: {
947
+ data: {
948
+ type: "apps",
949
+ id: app_id
950
+ }
951
+ }
952
+ }
953
+ }
954
+ }
955
+
956
+ tunes_request_client.post("customAppOrganizations", body)
957
+ end
958
+
959
+ def delete_custom_app_organization(custom_app_organization_id: nil)
960
+ params = tunes_request_client.build_params(filter: nil, includes: nil, limit: nil, sort: nil)
961
+ tunes_request_client.delete("customAppOrganizations/#{custom_app_organization_id}", params)
962
+ end
963
+
893
964
  #
894
965
  # idfaDeclarations
895
966
  #
@@ -16,7 +16,7 @@ module Supply
16
16
  end
17
17
 
18
18
  AVAILABLE_METADATA_FIELDS = %w(title short_description full_description video)
19
- IMAGES_TYPES = %w(featureGraphic icon promoGraphic tvBanner)
19
+ IMAGES_TYPES = %w(featureGraphic icon tvBanner) # https://developers.google.com/android-publisher/api-ref/rest/v3/AppImageType
20
20
  SCREENSHOT_TYPES = %w(phoneScreenshots sevenInchScreenshots tenInchScreenshots tvScreenshots wearScreenshots)
21
21
 
22
22
  IMAGES_FOLDER_NAME = "images"
@@ -111,7 +111,7 @@ module Supply
111
111
  releases = track.releases
112
112
 
113
113
  releases = releases.select { |r| r.status == status } if status
114
- releases = releases.select { |r| r.version_codes.map(&:to_s).include?(version_code.to_s) } if version_code
114
+ releases = releases.select { |r| (r.version_codes || []).map(&:to_s).include?(version_code.to_s) } if version_code
115
115
 
116
116
  if releases.size > 1
117
117
  UI.user_error!("More than one release found in this track. Please specify with the :version_code option to select a release.")
metadata CHANGED
@@ -1,35 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.162.0
4
+ version: 2.167.0
5
5
  platform: ruby
6
6
  authors:
7
- - Kohki Miki
8
- - Danielle Tomlinson
9
- - Aaron Brager
10
- - Fumiya Nakamura
11
- - Maksym Grebenets
12
- - Felix Krause
13
- - Joshua Liebowitz
7
+ - Matthew Ellis
8
+ - Jorge Revuelta H
14
9
  - Jérôme Lacoste
15
- - Iulian Onofrei
16
10
  - Max Ott
17
- - Daniel Jankowski
18
11
  - Josh Holtz
19
- - Olivier Halligon
20
- - Stefan Natchev
12
+ - Aaron Brager
21
13
  - Andrew McBurney
22
- - Luka Mirosevic
14
+ - Daniel Jankowski
15
+ - Fumiya Nakamura
23
16
  - Jimmy Dee
24
- - Matthew Ellis
17
+ - Kohki Miki
18
+ - Iulian Onofrei
25
19
  - Manu Wallner
26
- - Helmut Januschka
27
- - Jorge Revuelta H
20
+ - Stefan Natchev
21
+ - Felix Krause
22
+ - Joshua Liebowitz
28
23
  - Jan Piotrowski
24
+ - Olivier Halligon
25
+ - Luka Mirosevic
26
+ - Danielle Tomlinson
27
+ - Helmut Januschka
28
+ - Maksym Grebenets
29
29
  autorequire:
30
30
  bindir: bin
31
31
  cert_chain: []
32
- date: 2020-10-01 00:00:00.000000000 Z
32
+ date: 2020-11-13 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: slack-notifier
@@ -983,6 +983,7 @@ files:
983
983
  - fastlane/lib/fastlane/.erb_template_helper.rb.swp
984
984
  - fastlane/lib/fastlane/action.rb
985
985
  - fastlane/lib/fastlane/action_collector.rb
986
+ - fastlane/lib/fastlane/actions/.download_dsyms.rb.swp
986
987
  - fastlane/lib/fastlane/actions/.git_commit.rb.swp
987
988
  - fastlane/lib/fastlane/actions/README.md
988
989
  - fastlane/lib/fastlane/actions/actions_helper.rb
@@ -1654,6 +1655,8 @@ files:
1654
1655
  - spaceship/lib/spaceship/connect_api/models/bundle_id.rb
1655
1656
  - spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb
1656
1657
  - spaceship/lib/spaceship/connect_api/models/certificate.rb
1658
+ - spaceship/lib/spaceship/connect_api/models/custom_app_organization.rb
1659
+ - spaceship/lib/spaceship/connect_api/models/custom_app_user.rb
1657
1660
  - spaceship/lib/spaceship/connect_api/models/device.rb
1658
1661
  - spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb
1659
1662
  - spaceship/lib/spaceship/connect_api/models/pre_release_version.rb
@@ -1826,7 +1829,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1826
1829
  - !ruby/object:Gem::Version
1827
1830
  version: '0'
1828
1831
  requirements: []
1829
- rubygems_version: 3.0.6
1832
+ rubygems_version: 3.1.4
1830
1833
  signing_key:
1831
1834
  specification_version: 4
1832
1835
  summary: The easiest way to automate beta deployments and releases for your iOS and