fastlane 2.185.1 → 2.186.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +100 -100
  3. data/fastlane/lib/fastlane/actions/deploygate.rb +1 -2
  4. data/fastlane/lib/fastlane/actions/download_app_privacy_details_from_app_store.rb +1 -1
  5. data/fastlane/lib/fastlane/actions/download_dsyms.rb +3 -4
  6. data/fastlane/lib/fastlane/actions/dsym_zip.rb +1 -1
  7. data/fastlane/lib/fastlane/actions/ensure_git_branch.rb +0 -1
  8. data/fastlane/lib/fastlane/actions/ensure_git_status_clean.rb +3 -4
  9. data/fastlane/lib/fastlane/actions/ensure_no_debug_code.rb +3 -5
  10. data/fastlane/lib/fastlane/actions/ensure_xcode_version.rb +1 -2
  11. data/fastlane/lib/fastlane/actions/environment_variable.rb +13 -21
  12. data/fastlane/lib/fastlane/actions/erb.rb +2 -5
  13. data/fastlane/lib/fastlane/actions/get_build_number_repository.rb +1 -1
  14. data/fastlane/lib/fastlane/actions/get_ipa_info_plist_value.rb +0 -1
  15. data/fastlane/lib/fastlane/actions/get_managed_play_store_publishing_rights.rb +29 -34
  16. data/fastlane/lib/fastlane/actions/get_push_certificate.rb +1 -1
  17. data/fastlane/lib/fastlane/actions/git_add.rb +5 -10
  18. data/fastlane/lib/fastlane/actions/git_commit.rb +2 -6
  19. data/fastlane/lib/fastlane/actions/git_remote_branch.rb +57 -0
  20. data/fastlane/lib/fastlane/actions/github_api.rb +2 -5
  21. data/fastlane/lib/fastlane/actions/gradle.rb +11 -19
  22. data/fastlane/lib/fastlane/actions/hg_commit_version_bump.rb +1 -1
  23. data/fastlane/lib/fastlane/actions/hg_push.rb +1 -1
  24. data/fastlane/lib/fastlane/actions/hipchat.rb +4 -5
  25. data/fastlane/lib/fastlane/actions/hockey.rb +5 -12
  26. data/fastlane/lib/fastlane/actions/ifttt.rb +3 -6
  27. data/fastlane/lib/fastlane/actions/import_from_git.rb +2 -4
  28. data/fastlane/lib/fastlane/actions/increment_build_number.rb +1 -2
  29. data/fastlane/lib/fastlane/actions/install_on_device.rb +3 -6
  30. data/fastlane/lib/fastlane/actions/installr.rb +22 -25
  31. data/fastlane/lib/fastlane/actions/ipa.rb +2 -2
  32. data/fastlane/lib/fastlane/actions/jazzy.rb +8 -14
  33. data/fastlane/lib/fastlane/{actions/.git_commit.rb.swp → helper/.git_helper.rb.swp} +0 -0
  34. data/fastlane/lib/fastlane/helper/git_helper.rb +17 -5
  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 +1 -1
  39. data/fastlane/swift/Fastlane.swift +49 -32
  40. data/fastlane/swift/Gymfile.swift +1 -1
  41. data/fastlane/swift/GymfileProtocol.swift +1 -1
  42. data/fastlane/swift/Matchfile.swift +1 -1
  43. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  44. data/fastlane/swift/Precheckfile.swift +1 -1
  45. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  46. data/fastlane/swift/Scanfile.swift +1 -1
  47. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  48. data/fastlane/swift/Screengrabfile.swift +1 -1
  49. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  50. data/fastlane/swift/Snapshotfile.swift +1 -1
  51. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  52. data/fastlane/swift/formatting/Brewfile.lock.json +11 -11
  53. data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +13 -0
  54. data/match/lib/match/importer.rb +3 -0
  55. data/match/lib/match/nuke.rb +2 -3
  56. data/pilot/lib/pilot/build_manager.rb +0 -3
  57. data/pilot/lib/pilot/manager.rb +4 -1
  58. data/snapshot/lib/assets/SnapshotHelper.swift +1 -1
  59. data/spaceship/lib/spaceship/connect_api/api_client.rb +30 -5
  60. data/spaceship/lib/spaceship/connect_api/models/beta_tester.rb +3 -1
  61. data/spaceship/lib/spaceship/connect_api/models/build.rb +3 -1
  62. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +13 -0
  63. metadata +20 -19
@@ -17,4 +17,4 @@ public class Gymfile: GymfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.185.1
20
+ // Generated with fastlane 2.186.0
@@ -196,4 +196,4 @@ public extension GymfileProtocol {
196
196
 
197
197
  // Please don't remove the lines below
198
198
  // They are used to detect outdated files
199
- // FastlaneRunnerAPIVersion [0.9.76]
199
+ // FastlaneRunnerAPIVersion [0.9.77]
@@ -17,4 +17,4 @@ public class Matchfile: MatchfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.185.1
20
+ // Generated with fastlane 2.186.0
@@ -184,4 +184,4 @@ public extension MatchfileProtocol {
184
184
 
185
185
  // Please don't remove the lines below
186
186
  // They are used to detect outdated files
187
- // FastlaneRunnerAPIVersion [0.9.70]
187
+ // FastlaneRunnerAPIVersion [0.9.71]
@@ -17,4 +17,4 @@ public class Precheckfile: PrecheckfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.185.1
20
+ // Generated with fastlane 2.186.0
@@ -52,4 +52,4 @@ public extension PrecheckfileProtocol {
52
52
 
53
53
  // Please don't remove the lines below
54
54
  // They are used to detect outdated files
55
- // FastlaneRunnerAPIVersion [0.9.69]
55
+ // FastlaneRunnerAPIVersion [0.9.70]
@@ -17,4 +17,4 @@ public class Scanfile: ScanfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.185.1
20
+ // Generated with fastlane 2.186.0
@@ -292,4 +292,4 @@ public extension ScanfileProtocol {
292
292
 
293
293
  // Please don't remove the lines below
294
294
  // They are used to detect outdated files
295
- // FastlaneRunnerAPIVersion [0.9.81]
295
+ // FastlaneRunnerAPIVersion [0.9.82]
@@ -17,4 +17,4 @@ public class Screengrabfile: ScreengrabfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.185.1
20
+ // Generated with fastlane 2.186.0
@@ -96,4 +96,4 @@ public extension ScreengrabfileProtocol {
96
96
 
97
97
  // Please don't remove the lines below
98
98
  // They are used to detect outdated files
99
- // FastlaneRunnerAPIVersion [0.9.71]
99
+ // FastlaneRunnerAPIVersion [0.9.72]
@@ -17,4 +17,4 @@ public class Snapshotfile: SnapshotfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.185.1
20
+ // Generated with fastlane 2.186.0
@@ -200,4 +200,4 @@ public extension SnapshotfileProtocol {
200
200
 
201
201
  // Please don't remove the lines below
202
202
  // They are used to detect outdated files
203
- // FastlaneRunnerAPIVersion [0.9.65]
203
+ // FastlaneRunnerAPIVersion [0.9.66]
@@ -2,30 +2,30 @@
2
2
  "entries": {
3
3
  "brew": {
4
4
  "swiftformat": {
5
- "version": "0.48.4",
5
+ "version": "0.48.5",
6
6
  "bottle": {
7
7
  "rebuild": 0,
8
8
  "root_url": "https://ghcr.io/v2/homebrew/core",
9
9
  "files": {
10
10
  "arm64_big_sur": {
11
11
  "cellar": ":any_skip_relocation",
12
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:d85e28a31b1b0c3120d796f9dec0eb001369adb5166371f2dcb16bd9972ddc05",
13
- "sha256": "d85e28a31b1b0c3120d796f9dec0eb001369adb5166371f2dcb16bd9972ddc05"
12
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:7619ac8360774b9854b838912b43b8d7be9dfd39a2cf4bdd24afbc2007cd6bd8",
13
+ "sha256": "7619ac8360774b9854b838912b43b8d7be9dfd39a2cf4bdd24afbc2007cd6bd8"
14
14
  },
15
15
  "big_sur": {
16
16
  "cellar": ":any_skip_relocation",
17
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:b8572efabc3aa0627898ae23fbb7847e5e007fb631217df54d30ac5a2b52f82a",
18
- "sha256": "b8572efabc3aa0627898ae23fbb7847e5e007fb631217df54d30ac5a2b52f82a"
17
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:c50e89c6fd21e817cdf5f1b1d0a51c25553e0d5bcb396fe18e6404f4ad31c2b8",
18
+ "sha256": "c50e89c6fd21e817cdf5f1b1d0a51c25553e0d5bcb396fe18e6404f4ad31c2b8"
19
19
  },
20
20
  "catalina": {
21
21
  "cellar": ":any_skip_relocation",
22
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:384c3e7c2ce67b2b291774c17da54d0f43ee3b93db3d5f2254c7bbdbbb42213e",
23
- "sha256": "384c3e7c2ce67b2b291774c17da54d0f43ee3b93db3d5f2254c7bbdbbb42213e"
22
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:41d5ecd73bba3c90c8770d33dc86fb0a07f9fb23034d1b07517e7dd9431e8280",
23
+ "sha256": "41d5ecd73bba3c90c8770d33dc86fb0a07f9fb23034d1b07517e7dd9431e8280"
24
24
  },
25
25
  "mojave": {
26
26
  "cellar": ":any_skip_relocation",
27
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:5093e230eccbc34e1d0782ba558bcebb3959af7cb2909a6dbefb0d8db88b4242",
28
- "sha256": "5093e230eccbc34e1d0782ba558bcebb3959af7cb2909a6dbefb0d8db88b4242"
27
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:369cb9a0eca80fc8fd0ae5a1dcf6dad9aea366d3325e196276b05b9abb392357",
28
+ "sha256": "369cb9a0eca80fc8fd0ae5a1dcf6dad9aea366d3325e196276b05b9abb392357"
29
29
  }
30
30
  }
31
31
  }
@@ -35,9 +35,9 @@
35
35
  "system": {
36
36
  "macos": {
37
37
  "catalina": {
38
- "HOMEBREW_VERSION": "3.1.12-15-gd3887df",
38
+ "HOMEBREW_VERSION": "3.2.0-18-g4f33c2c",
39
39
  "HOMEBREW_PREFIX": "/usr/local",
40
- "Homebrew/homebrew-core": "097ed0bac48effdca36a4a06a4c8bd6416b25ae5",
40
+ "Homebrew/homebrew-core": "b7aeea4e146fc17d70862def113e90ee3153d514",
41
41
  "CLT": "11.0.0.33.12",
42
42
  "Xcode": "12.4",
43
43
  "macOS": "10.15.7"
@@ -216,6 +216,17 @@ module FastlaneCore
216
216
  end
217
217
  end
218
218
 
219
+ def ensure_array_type_passes_validation(value)
220
+ if @skip_type_validation
221
+ return
222
+ end
223
+
224
+ # Arrays can be an either be an array or string that gets split by comma in auto_convert_type
225
+ if !value.kind_of?(Array) && !value.kind_of?(String)
226
+ UI.user_error!("'#{self.key}' value must be either `Array` or `comma-separated String`! Found #{value.class} instead.")
227
+ end
228
+ end
229
+
219
230
  # Make sure, the value is valid (based on the verify block)
220
231
  # Raises an exception if the value is invalid
221
232
  def valid?(value)
@@ -225,6 +236,8 @@ module FastlaneCore
225
236
  # Verify that value is the type that we're expecting, if we are expecting a type
226
237
  if data_type == Fastlane::Boolean
227
238
  ensure_boolean_type_passes_validation(value)
239
+ elsif data_type == Array
240
+ ensure_array_type_passes_validation(value)
228
241
  else
229
242
  ensure_generic_type_passes_validation(value)
230
243
  end
@@ -22,6 +22,9 @@ module Match
22
22
  git_branch: params[:git_branch],
23
23
  git_full_name: params[:git_full_name],
24
24
  git_user_email: params[:git_user_email],
25
+ git_private_key: params[:git_private_key],
26
+ git_basic_authorization: params[:git_basic_authorization],
27
+ git_bearer_authorization: params[:git_bearer_authorization],
25
28
  clone_branch_directly: params[:clone_branch_directly],
26
29
  type: params[:type].to_s,
27
30
  platform: params[:platform].to_s,
@@ -247,9 +247,8 @@ module Match
247
247
  UI.success("Successfully deleted certificate")
248
248
  end
249
249
 
250
- if self.files.count > 0
251
- files_to_delete = delete_files!
252
- end
250
+ files_to_delete = delete_files! if self.files.count > 0
251
+ files_to_delete ||= []
253
252
 
254
253
  self.encryption.encrypt_files if self.encryption
255
254
 
@@ -366,9 +366,6 @@ module Pilot
366
366
  # If there are multiple teams, infer the provider from the selected team name.
367
367
  # If there are fewer than two teams, don't infer the provider.
368
368
  def transporter_for_selected_team(options)
369
- # Ensure that user is authenticated
370
- start(options)
371
-
372
369
  # Use JWT auth
373
370
  api_token = Spaceship::ConnectAPI.token
374
371
  unless api_token.nil?
@@ -13,7 +13,10 @@ module Pilot
13
13
  def start(options, should_login: true)
14
14
  return if @config # to not login multiple times
15
15
  @config = options
16
- login if should_login
16
+
17
+ # we will always start with App Store Connect API login 'if possible'
18
+ # else fallback to 'should_login' param for 'apple_id' login
19
+ login if options[:api_key_path] || options[:api_key] || should_login
17
20
  end
18
21
 
19
22
  def login
@@ -302,4 +302,4 @@ private extension CGFloat {
302
302
 
303
303
  // Please don't remove the lines below
304
304
  // They are used to detect outdated configuration files
305
- // SnapshotHelperVersion [1.25]
305
+ // SnapshotHelperVersion [1.26]
@@ -207,16 +207,19 @@ module Spaceship
207
207
 
208
208
  # Overridden from Spaceship::Client
209
209
  def handle_error(response)
210
+ body = response.body.empty? ? {} : response.body
211
+ body = JSON.parse(body) if body.kind_of?(String)
212
+
210
213
  case response.status.to_i
211
214
  when 401
212
- raise UnauthorizedAccessError, format_errors(response) if response && (response.body || {})['errors']
215
+ raise UnauthorizedAccessError, format_errors(response)
213
216
  when 403
214
- error = (response.body['errors'] || []).first || {}
217
+ error = (body['errors'] || []).first || {}
215
218
  error_code = error['code']
216
219
  if error_code == "FORBIDDEN.REQUIRED_AGREEMENTS_MISSING_OR_EXPIRED"
217
- raise ProgramLicenseAgreementUpdated, format_errors(response) if response && (response.body || {})['errors']
220
+ raise ProgramLicenseAgreementUpdated, format_errors(response)
218
221
  else
219
- raise AccessForbiddenError, format_errors(response) if response && (response.body || {})['errors']
222
+ raise AccessForbiddenError, format_errors(response)
220
223
  end
221
224
  end
222
225
  end
@@ -280,7 +283,23 @@ module Spaceship
280
283
  # ]
281
284
  # }
282
285
 
283
- return response.body['errors'].map do |error|
286
+ # Membership expired
287
+ # {
288
+ # "errors" : [
289
+ # {
290
+ # "id" : "UUID",
291
+ # "status" : "403",
292
+ # "code" : "FORBIDDEN_ERROR",
293
+ # "title" : "This request is forbidden for security reasons",
294
+ # "detail" : "Team ID: 'ID' is not associated with an active membership. To check your teams membership status, sign in your account on the developer website. https://developer.apple.com/account/"
295
+ # }
296
+ # ]
297
+ # }
298
+
299
+ body = response.body.empty? ? {} : response.body
300
+ body = JSON.parse(body) if body.kind_of?(String)
301
+
302
+ formatted_errors = (body['errors'] || []).map do |error|
284
303
  messages = [[error['title'], error['detail'], error.dig("source", "pointer")].compact.join(" - ")]
285
304
 
286
305
  meta = error["meta"] || {}
@@ -290,6 +309,12 @@ module Spaceship
290
309
  [[associated_error["title"], associated_error["detail"]].compact.join(" - ")]
291
310
  end
292
311
  end.flatten.join("\n")
312
+
313
+ if formatted_errors.empty?
314
+ formatted_errors << "Unknown error"
315
+ end
316
+
317
+ return formatted_errors
293
318
  end
294
319
 
295
320
  private
@@ -13,6 +13,7 @@ module Spaceship
13
13
  attr_accessor :apps
14
14
  attr_accessor :beta_groups
15
15
  attr_accessor :beta_tester_metrics
16
+ attr_accessor :builds
16
17
 
17
18
  attr_mapping({
18
19
  "firstName" => "first_name",
@@ -23,7 +24,8 @@ module Spaceship
23
24
 
24
25
  "apps" => "apps",
25
26
  "betaGroups" => "beta_groups",
26
- "betaTesterMetrics" => "beta_tester_metrics"
27
+ "betaTesterMetrics" => "beta_tester_metrics",
28
+ "builds" => "builds"
27
29
  })
28
30
 
29
31
  def self.type
@@ -20,6 +20,7 @@ module Spaceship
20
20
  attr_accessor :beta_build_localizations
21
21
  attr_accessor :build_beta_detail
22
22
  attr_accessor :pre_release_version
23
+ attr_accessor :individual_testers
23
24
 
24
25
  attr_mapping({
25
26
  "version" => "version",
@@ -36,7 +37,8 @@ module Spaceship
36
37
  "betaBuildMetrics" => "beta_build_metrics",
37
38
  "betaBuildLocalizations" => "beta_build_localizations",
38
39
  "buildBetaDetail" => "build_beta_detail",
39
- "preReleaseVersion" => "pre_release_version"
40
+ "preReleaseVersion" => "pre_release_version",
41
+ "individualTesters" => "individual_testers"
40
42
  })
41
43
 
42
44
  ESSENTIAL_INCLUDES = "app,buildBetaDetail,preReleaseVersion"
@@ -327,6 +327,19 @@ module Spaceship
327
327
  test_flight_request_client.delete("apps/#{app_id}/relationships/betaTesters", nil, body)
328
328
  end
329
329
 
330
+ def add_beta_tester_to_builds(beta_tester_id: nil, build_ids: [])
331
+ body = {
332
+ data: build_ids.map do |id|
333
+ {
334
+ type: "builds",
335
+ id: id
336
+ }
337
+ end
338
+ }
339
+
340
+ test_flight_request_client.post("betaTesters/#{beta_tester_id}/relationships/builds", body)
341
+ end
342
+
330
343
  #
331
344
  # betaTesterMetrics
332
345
  #
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.185.1
4
+ version: 2.186.0
5
5
  platform: ruby
6
6
  authors:
7
- - Jimmy Dee
7
+ - Manish Rathi
8
+ - Daniel Jankowski
9
+ - Matthew Ellis
10
+ - Andrew McBurney
8
11
  - Jorge Revuelta H
9
- - Maksym Grebenets
12
+ - Felix Krause
10
13
  - Aaron Brager
11
- - Jan Piotrowski
12
- - Joshua Liebowitz
13
- - Helmut Januschka
14
- - Manish Rathi
14
+ - Jérôme Lacoste
15
+ - Satoshi Namai
15
16
  - Fumiya Nakamura
16
- - Olivier Halligon
17
- - Josh Holtz
18
- - Felix Krause
19
- - Iulian Onofrei
20
- - Matthew Ellis
21
17
  - Manu Wallner
22
- - Jérôme Lacoste
23
18
  - Kohki Miki
24
19
  - Roger Oba
25
20
  - Stefan Natchev
21
+ - Iulian Onofrei
22
+ - Josh Holtz
26
23
  - Luka Mirosevic
27
- - Satoshi Namai
28
- - Andrew McBurney
29
- - Max Ott
24
+ - Helmut Januschka
25
+ - Olivier Halligon
30
26
  - Danielle Tomlinson
31
- - Daniel Jankowski
27
+ - Jimmy Dee
28
+ - Jan Piotrowski
29
+ - Joshua Liebowitz
30
+ - Max Ott
31
+ - Maksym Grebenets
32
32
  autorequire:
33
33
  bindir: bin
34
34
  cert_chain: []
35
- date: 2021-06-14 00:00:00.000000000 Z
35
+ date: 2021-06-23 00:00:00.000000000 Z
36
36
  dependencies:
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: xcodeproj
@@ -998,7 +998,6 @@ files:
998
998
  - fastlane/lib/fastlane/.erb_template_helper.rb.swp
999
999
  - fastlane/lib/fastlane/action.rb
1000
1000
  - fastlane/lib/fastlane/action_collector.rb
1001
- - fastlane/lib/fastlane/actions/.git_commit.rb.swp
1002
1001
  - fastlane/lib/fastlane/actions/README.md
1003
1002
  - fastlane/lib/fastlane/actions/actions_helper.rb
1004
1003
  - fastlane/lib/fastlane/actions/adb.rb
@@ -1103,6 +1102,7 @@ files:
1103
1102
  - fastlane/lib/fastlane/actions/git_branch.rb
1104
1103
  - fastlane/lib/fastlane/actions/git_commit.rb
1105
1104
  - fastlane/lib/fastlane/actions/git_pull.rb
1105
+ - fastlane/lib/fastlane/actions/git_remote_branch.rb
1106
1106
  - fastlane/lib/fastlane/actions/git_submodule_update.rb
1107
1107
  - fastlane/lib/fastlane/actions/git_tag_exists.rb
1108
1108
  - fastlane/lib/fastlane/actions/github_api.rb
@@ -1261,6 +1261,7 @@ files:
1261
1261
  - fastlane/lib/fastlane/fast_file.rb
1262
1262
  - fastlane/lib/fastlane/fastlane_require.rb
1263
1263
  - fastlane/lib/fastlane/features.rb
1264
+ - fastlane/lib/fastlane/helper/.git_helper.rb.swp
1264
1265
  - fastlane/lib/fastlane/helper/README.md
1265
1266
  - fastlane/lib/fastlane/helper/adb_helper.rb
1266
1267
  - fastlane/lib/fastlane/helper/crashlytics_helper.rb