fastlane 2.132.0 → 2.135.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +74 -74
  3. data/fastlane/lib/fastlane/action.rb +1 -1
  4. data/fastlane/lib/fastlane/actions/actions_helper.rb +1 -1
  5. data/fastlane/lib/fastlane/actions/carthage.rb +7 -0
  6. data/fastlane/lib/fastlane/actions/cocoapods.rb +24 -2
  7. data/fastlane/lib/fastlane/actions/deploygate.rb +1 -1
  8. data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +1 -1
  9. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +4 -2
  10. data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +26 -2
  11. data/fastlane/lib/fastlane/actions/download_dsyms.rb +26 -3
  12. data/fastlane/lib/fastlane/actions/download_from_play_store.rb +1 -1
  13. data/fastlane/lib/fastlane/actions/get_version_number.rb +10 -4
  14. data/fastlane/lib/fastlane/actions/google_play_track_version_codes.rb +5 -1
  15. data/fastlane/lib/fastlane/actions/sonar.rb +16 -0
  16. data/fastlane/lib/fastlane/actions/testfairy.rb +1 -1
  17. data/fastlane/lib/fastlane/actions/update_fastlane.rb +9 -49
  18. data/fastlane/lib/fastlane/actions/update_keychain_access_groups.rb +94 -0
  19. data/fastlane/lib/fastlane/environment_printer.rb +9 -3
  20. data/fastlane/lib/fastlane/fast_file.rb +3 -2
  21. data/fastlane/lib/fastlane/lane_manager.rb +1 -1
  22. data/fastlane/lib/fastlane/plugins/plugin_manager.rb +12 -2
  23. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +1 -0
  24. data/fastlane/lib/fastlane/runner.rb +2 -2
  25. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +10 -2
  26. data/fastlane/lib/fastlane/swift_fastlane_function.rb +72 -3
  27. data/fastlane/lib/fastlane/version.rb +1 -1
  28. data/fastlane/swift/Deliverfile.swift +1 -1
  29. data/fastlane/swift/DeliverfileProtocol.swift +121 -1
  30. data/fastlane/swift/Fastlane.swift +3900 -16
  31. data/fastlane/swift/Gymfile.swift +1 -1
  32. data/fastlane/swift/GymfileProtocol.swift +81 -1
  33. data/fastlane/swift/Matchfile.swift +1 -1
  34. data/fastlane/swift/MatchfileProtocol.swift +60 -2
  35. data/fastlane/swift/Precheckfile.swift +1 -1
  36. data/fastlane/swift/PrecheckfileProtocol.swift +15 -2
  37. data/fastlane/swift/Scanfile.swift +1 -1
  38. data/fastlane/swift/ScanfileProtocol.swift +109 -1
  39. data/fastlane/swift/Screengrabfile.swift +1 -1
  40. data/fastlane/swift/ScreengrabfileProtocol.swift +39 -2
  41. data/fastlane/swift/Snapshotfile.swift +1 -1
  42. data/fastlane/swift/SnapshotfileProtocol.swift +69 -1
  43. data/fastlane_core/lib/fastlane_core/configuration/commander_generator.rb +3 -3
  44. data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +1 -1
  45. data/fastlane_core/lib/fastlane_core/device_manager.rb +1 -1
  46. data/fastlane_core/lib/fastlane_core/swag.rb +1 -1
  47. data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +1 -1
  48. data/match/lib/match/importer.rb +1 -1
  49. data/match/lib/match/storage/google_cloud_storage.rb +3 -0
  50. data/scan/lib/scan/error_handler.rb +9 -4
  51. data/scan/lib/scan/runner.rb +1 -1
  52. data/sigh/lib/assets/resign.sh +2 -2
  53. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb +1 -1
  54. data/spaceship/lib/spaceship/client.rb +2 -2
  55. data/supply/lib/supply.rb +23 -0
  56. data/supply/lib/supply/.options.rb.swp +0 -0
  57. data/supply/lib/supply/.uploader.rb.swp +0 -0
  58. data/supply/lib/supply/client.rb +101 -55
  59. data/supply/lib/supply/options.rb +50 -14
  60. data/supply/lib/supply/release_listing.rb +18 -0
  61. data/supply/lib/supply/setup.rb +42 -34
  62. data/supply/lib/supply/uploader.rb +171 -93
  63. metadata +36 -41
  64. data/fastlane/lib/fastlane/actions/.hockey.rb.swp +0 -0
  65. data/fastlane/lib/fastlane/actions/.slack.rb.swp +0 -0
  66. data/fastlane/lib/fastlane/actions/.update_project_provisioning.rb.swp +0 -0
  67. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  68. data/gym/lib/gym/.runner.rb.swp +0 -0
  69. data/pilot/lib/pilot/.manager.rb.swp +0 -0
  70. data/spaceship/lib/spaceship/connect_api/.DS_Store +0 -0
  71. data/spaceship/lib/spaceship/portal/.certificate.rb.swp +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 695d000a1213e2308cfe825c9bcc8208af5e9733
4
- data.tar.gz: d69ecd0ca465f574ca3d0a5fd059fa8cf8b5140b
2
+ SHA256:
3
+ metadata.gz: bc8a348892470f7c95c046a30e878eeb46a3364e29266d6e2eede8820cda60c9
4
+ data.tar.gz: a33412ac7217f0dfe530dcbee955c80c3290cdacabaef708ae9a755008470863
5
5
  SHA512:
6
- metadata.gz: a56c8c367b041464f2d6c14d946f1da6778d26aee8986060e3b2aefaa8c46deb9b97ad152c63eb7265c4c996374c2521caab7f9b32571a2f2f5b58a48f7251ea
7
- data.tar.gz: 81236a7e159bae18edf8d624c4c7758263d6c09c613fdd3f7bc2e30d3c5ec5e707a496341caf2731eebd77fec4287971085886f72081eeb954b3010288fb33b0
6
+ metadata.gz: f1eb4a8112757f60290d56eb206f26039b5c47abf1999cd09fcfe29eb308596aa8e117057c4ea09e651c2d63526effae43ff9e0b8d577ce155fe9ff36a110e83
7
+ data.tar.gz: f071dcaa3f3a11baa944d5c6408a544a3f7f42d76ec9bdfa32d2a962717242587583e958d8bbd4c2dade656d0b95779c971ddaaabdb0f49da42a3ebcd4171b0b
data/README.md CHANGED
@@ -34,29 +34,43 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
34
34
  <!-- This table is regenerated and resorted on each release -->
35
35
  <table id='team'>
36
36
  <tr>
37
- <td id='helmut-januschka'>
38
- <a href='https://github.com/hjanuschka'>
39
- <img src='https://github.com/hjanuschka.png?size=140'>
37
+ <td id='iulian-onofrei'>
38
+ <a href='https://github.com/revolter'>
39
+ <img src='https://github.com/revolter.png?size=140'>
40
40
  </a>
41
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
41
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
42
42
  </td>
43
- <td id='manu-wallner'>
44
- <a href='https://github.com/milch'>
45
- <img src='https://github.com/milch.png?size=140'>
43
+ <td id='stefan-natchev'>
44
+ <a href='https://github.com/snatchev'>
45
+ <img src='https://github.com/snatchev.png?size=140'>
46
46
  </a>
47
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
47
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
48
48
  </td>
49
- <td id='aaron-brager'>
50
- <a href='https://github.com/getaaron'>
51
- <img src='https://github.com/getaaron.png?size=140'>
49
+ <td id='jorge-revuelta-h'>
50
+ <a href='https://github.com/minuscorp'>
51
+ <img src='https://github.com/minuscorp.png?size=140'>
52
52
  </a>
53
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
53
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
54
54
  </td>
55
- <td id='matthew-ellis'>
56
- <a href='https://github.com/matthewellis'>
57
- <img src='https://github.com/matthewellis.png?size=140'>
55
+ <td id='josh-holtz'>
56
+ <a href='https://github.com/joshdholtz'>
57
+ <img src='https://github.com/joshdholtz.png?size=140'>
58
58
  </a>
59
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
59
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
60
+ </td>
61
+ <td id='danielle-tomlinson'>
62
+ <a href='https://github.com/endocrimes'>
63
+ <img src='https://github.com/endocrimes.png?size=140'>
64
+ </a>
65
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
66
+ </td>
67
+ </tr>
68
+ <tr>
69
+ <td id='joshua-liebowitz'>
70
+ <a href='https://github.com/taquitos'>
71
+ <img src='https://github.com/taquitos.png?size=140'>
72
+ </a>
73
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
60
74
  </td>
61
75
  <td id='olivier-halligon'>
62
76
  <a href='https://github.com/AliSoftware'>
@@ -64,101 +78,87 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
64
78
  </a>
65
79
  <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
66
80
  </td>
67
- </tr>
68
- <tr>
81
+ <td id='maksym-grebenets'>
82
+ <a href='https://github.com/mgrebenets'>
83
+ <img src='https://github.com/mgrebenets.png?size=140'>
84
+ </a>
85
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
86
+ </td>
87
+ <td id='jérôme-lacoste'>
88
+ <a href='https://github.com/lacostej'>
89
+ <img src='https://github.com/lacostej.png?size=140'>
90
+ </a>
91
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
92
+ </td>
69
93
  <td id='kohki-miki'>
70
94
  <a href='https://github.com/giginet'>
71
95
  <img src='https://github.com/giginet.png?size=140'>
72
96
  </a>
73
97
  <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
74
98
  </td>
99
+ </tr>
100
+ <tr>
101
+ <td id='andrew-mcburney'>
102
+ <a href='https://github.com/armcburney'>
103
+ <img src='https://github.com/armcburney.png?size=140'>
104
+ </a>
105
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
106
+ </td>
75
107
  <td id='luka-mirosevic'>
76
108
  <a href='https://github.com/lmirosevic'>
77
109
  <img src='https://github.com/lmirosevic.png?size=140'>
78
110
  </a>
79
111
  <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
80
112
  </td>
81
- <td id='josh-holtz'>
82
- <a href='https://github.com/joshdholtz'>
83
- <img src='https://github.com/joshdholtz.png?size=140'>
84
- </a>
85
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
86
- </td>
87
- <td id='joshua-liebowitz'>
88
- <a href='https://github.com/taquitos'>
89
- <img src='https://github.com/taquitos.png?size=140'>
90
- </a>
91
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
92
- </td>
93
113
  <td id='jan-piotrowski'>
94
114
  <a href='https://github.com/janpio'>
95
115
  <img src='https://github.com/janpio.png?size=140'>
96
116
  </a>
97
117
  <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
98
118
  </td>
99
- </tr>
100
- <tr>
101
119
  <td id='fumiya-nakamura'>
102
120
  <a href='https://github.com/nafu'>
103
121
  <img src='https://github.com/nafu.png?size=140'>
104
122
  </a>
105
123
  <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
106
124
  </td>
107
- <td id='jorge-revuelta-h'>
108
- <a href='https://github.com/minuscorp'>
109
- <img src='https://github.com/minuscorp.png?size=140'>
110
- </a>
111
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
112
- </td>
113
- <td id='jimmy-dee'>
114
- <a href='https://github.com/jdee'>
115
- <img src='https://github.com/jdee.png?size=140'>
116
- </a>
117
- <h4 align='center'>Jimmy Dee</h4>
118
- </td>
119
- <td id='stefan-natchev'>
120
- <a href='https://github.com/snatchev'>
121
- <img src='https://github.com/snatchev.png?size=140'>
122
- </a>
123
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
124
- </td>
125
- <td id='danielle-tomlinson'>
126
- <a href='https://github.com/endocrimes'>
127
- <img src='https://github.com/endocrimes.png?size=140'>
128
- </a>
129
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
130
- </td>
131
- </tr>
132
- <tr>
133
125
  <td id='felix-krause'>
134
126
  <a href='https://github.com/KrauseFx'>
135
127
  <img src='https://github.com/KrauseFx.png?size=140'>
136
128
  </a>
137
129
  <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
138
130
  </td>
139
- <td id='iulian-onofrei'>
140
- <a href='https://github.com/revolter'>
141
- <img src='https://github.com/revolter.png?size=140'>
131
+ </tr>
132
+ <tr>
133
+ <td id='manu-wallner'>
134
+ <a href='https://github.com/milch'>
135
+ <img src='https://github.com/milch.png?size=140'>
142
136
  </a>
143
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
137
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
144
138
  </td>
145
- <td id='jérôme-lacoste'>
146
- <a href='https://github.com/lacostej'>
147
- <img src='https://github.com/lacostej.png?size=140'>
139
+ <td id='helmut-januschka'>
140
+ <a href='https://github.com/hjanuschka'>
141
+ <img src='https://github.com/hjanuschka.png?size=140'>
148
142
  </a>
149
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
143
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
150
144
  </td>
151
- <td id='maksym-grebenets'>
152
- <a href='https://github.com/mgrebenets'>
153
- <img src='https://github.com/mgrebenets.png?size=140'>
145
+ <td id='jimmy-dee'>
146
+ <a href='https://github.com/jdee'>
147
+ <img src='https://github.com/jdee.png?size=140'>
154
148
  </a>
155
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
149
+ <h4 align='center'>Jimmy Dee</h4>
156
150
  </td>
157
- <td id='andrew-mcburney'>
158
- <a href='https://github.com/armcburney'>
159
- <img src='https://github.com/armcburney.png?size=140'>
151
+ <td id='aaron-brager'>
152
+ <a href='https://github.com/getaaron'>
153
+ <img src='https://github.com/getaaron.png?size=140'>
160
154
  </a>
161
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
155
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
156
+ </td>
157
+ <td id='matthew-ellis'>
158
+ <a href='https://github.com/matthewellis'>
159
+ <img src='https://github.com/matthewellis.png?size=140'>
160
+ </a>
161
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
162
162
  </td>
163
163
  </tr>
164
164
  </table>
@@ -134,7 +134,7 @@ module Fastlane
134
134
  UI.user_error!("To call another action from an action use `other_action.#{method_sym}` instead")
135
135
  end
136
136
 
137
- # When shelling out from the actoin, should we use `bundle exec`?
137
+ # When shelling out from the action, should we use `bundle exec`?
138
138
  def self.shell_out_should_use_bundle_exec?
139
139
  return File.exist?('Gemfile') && !Helper.contained_fastlane?
140
140
  end
@@ -77,7 +77,7 @@ module Fastlane
77
77
  # rubocop:enable Style/AccessorMethodName
78
78
 
79
79
  # Returns the class ref to the action based on the action name
80
- # Returns nil if the action is not aailable
80
+ # Returns nil if the action is not available
81
81
  def self.action_class_ref(action_name)
82
82
  class_name = action_name.to_s.fastlane_class + 'Action'
83
83
  class_ref = nil
@@ -21,6 +21,7 @@ module Fastlane
21
21
  cmd << "--use-ssh" if params[:use_ssh]
22
22
  cmd << "--use-submodules" if params[:use_submodules]
23
23
  cmd << "--no-use-binaries" if params[:use_binaries] == false
24
+ cmd << "--no-checkout" if params[:no_checkout] == true
24
25
  cmd << "--no-build" if params[:no_build] == true
25
26
  cmd << "--no-skip-current" if params[:no_skip_current] == true
26
27
  cmd << "--verbose" if params[:verbose] == true
@@ -94,6 +95,12 @@ module Fastlane
94
95
  is_string: false,
95
96
  type: Boolean,
96
97
  optional: true),
98
+ FastlaneCore::ConfigItem.new(key: :no_checkout,
99
+ env_name: "FL_CARTHAGE_NO_CHECKOUT",
100
+ description: "When bootstrapping Carthage do not checkout",
101
+ is_string: false,
102
+ type: Boolean,
103
+ optional: true),
97
104
  FastlaneCore::ConfigItem.new(key: :no_build,
98
105
  env_name: "FL_CARTHAGE_NO_BUILD",
99
106
  description: "When bootstrapping Carthage do not build",
@@ -14,15 +14,17 @@ module Fastlane
14
14
  cmd << ["cd '#{podfile_folder}' &&"]
15
15
  end
16
16
 
17
- cmd << ['bundle exec'] if params[:use_bundle_exec] && shell_out_should_use_bundle_exec?
17
+ cmd << ['bundle exec'] if use_bundle_exec?(params)
18
18
  cmd << ['pod install']
19
19
 
20
20
  cmd << '--no-clean' unless params[:clean]
21
21
  cmd << '--no-integrate' unless params[:integrate]
22
+ cmd << '--clean-install' if params[:clean_install] && pod_version.to_f >= 1.7
22
23
  cmd << '--repo-update' if params[:repo_update]
23
24
  cmd << '--silent' if params[:silent]
24
25
  cmd << '--verbose' if params[:verbose]
25
26
  cmd << '--no-ansi' unless params[:ansi]
27
+ cmd << '--deployment' if params[:deployment]
26
28
 
27
29
  Actions.sh(cmd.join(' '), error_callback: lambda { |result|
28
30
  if !params[:repo_update] && params[:try_repo_update_on_error]
@@ -36,6 +38,14 @@ module Fastlane
36
38
  })
37
39
  end
38
40
 
41
+ def self.use_bundle_exec?(params)
42
+ params[:use_bundle_exec] && shell_out_should_use_bundle_exec?
43
+ end
44
+
45
+ def self.pod_version
46
+ use_bundle_exec?(params) ? `bundle exec pod --version` : `pod --version`
47
+ end
48
+
39
49
  def self.call_error_callback(params, result)
40
50
  if params[:error_callback]
41
51
  Dir.chdir(FastlaneCore::FastlaneFolder.path) do
@@ -57,6 +67,11 @@ module Fastlane
57
67
  description: "Add `--repo-update` flag to `pod install` command",
58
68
  is_string: false,
59
69
  default_value: false),
70
+ FastlaneCore::ConfigItem.new(key: :clean_install,
71
+ env_name: "FL_COCOAPODS_CLEAN_INSTALL",
72
+ description: "Execute a full pod installation ignoring the content of the project cache",
73
+ is_string: false,
74
+ default_value: false),
60
75
  FastlaneCore::ConfigItem.new(key: :silent,
61
76
  env_name: "FL_COCOAPODS_SILENT",
62
77
  description: "Execute command without logging output",
@@ -98,11 +113,18 @@ module Fastlane
98
113
  is_string: false,
99
114
  default_value: false,
100
115
  type: Boolean),
116
+ FastlaneCore::ConfigItem.new(key: :deployment,
117
+ env_name: "FL_COCOAPODS_DEPLOYMENT",
118
+ description: 'Disallow any changes to the Podfile or the Podfile.lock during installation',
119
+ optional: true,
120
+ is_string: false,
121
+ default_value: false,
122
+ type: Boolean),
101
123
 
102
124
  # Deprecated
103
125
  FastlaneCore::ConfigItem.new(key: :clean,
104
126
  env_name: "FL_COCOAPODS_CLEAN",
105
- description: "(Option removed from cocoapods) Remove SCM directories",
127
+ description: "(Option renamed as clean_install) Remove SCM directories",
106
128
  deprecated: true,
107
129
  is_string: false,
108
130
  default_value: true),
@@ -33,7 +33,7 @@ module Fastlane
33
33
  options[:disable_notify] = 'yes' if options[:disable_notify]
34
34
 
35
35
  connection.post("/api/users/#{user_name}/apps", options)
36
- rescue Faraday::Error::TimeoutError
36
+ rescue Faraday::TimeoutError
37
37
  UI.crash!("Timed out while uploading build. Check https://deploygate.com/ to see if the upload was completed.")
38
38
  end
39
39
 
@@ -128,7 +128,7 @@ Your screenshots will be stored in the `./screenshots/` folder by default (or `.
128
128
 
129
129
  New with Xcode 9, *snapshot* can run multiple simulators concurrently. This is the default behavior in order to take your screenshots as quickly as possible. This can be disabled to run each device, one at a time, by setting the `:concurrent_simulators` option to `false`.
130
130
 
131
- **Note:** While running *snapshot* with Xcode 9, the simulators will not be visibly spawned. So, while you wont see the simulators running your tests, they will, in fact, be taking your screenshots.
131
+ **Note:** While running *snapshot* with Xcode 9, the simulators will not be visibly spawned. So, while you won't see the simulators running your tests, they will, in fact, be taking your screenshots.
132
132
 
133
133
  If any error occurs while running the snapshot script on a device, that device will not have any screenshots, and _snapshot_ will continue with the next device or language. To stop the flow after the first error, run
134
134
 
@@ -99,7 +99,7 @@ If your machine is currently using SSH to authenticate with GitHub, you'll want
99
99
  Using parameter:
100
100
 
101
101
  ```
102
- math(git_basic_authorization: '<YOUR KEY>')
102
+ match(git_basic_authorization: '<YOUR KEY>')
103
103
  ```
104
104
 
105
105
  Using environment variable:
@@ -236,9 +236,11 @@ There are two cases for reading and writing certificates stored in a Google Clou
236
236
  When running `fastlane match init` the first time, the setup process will give you the option to create your `gc_keys.json` file. This file contains the authentication credentials needed to access your Google Cloud storage bucket. Make sure to keep that file secret and never add it to version control. We recommend adding `gc_keys.json` to your `.gitignore`
237
237
 
238
238
  ##### Managing developer access via keys
239
+
239
240
  If you want to manage developer access to your certificates via authentication keys, every developer should create their own `gc_keys.json` and add the file to all their work machines. This will give the admin full control over who has read/write access to the given Storage bucket. At the same time it allows your team to revoke a single key if a file gets compromised.
240
241
 
241
- ##### Managing developer acess via Google accounts
242
+ ##### Managing developer access via Google accounts
243
+
242
244
  If your developers already have Google accounts and access to your Google Cloud project, you can also manage access to the storage bucket via [Cloud Identity and Access Management (IAM)](https://cloud.google.com/storage/docs/access-control/iam). Just [set up](https://cloud.google.com/storage/docs/access-control/lists) individual developer accounts or an entire Google Group containing your team as readers and writers on your storage bucket.
243
245
 
244
246
  You can then specify the Google Cloud project id containing your storage bucket in your `Matchfile`:
@@ -75,7 +75,7 @@ This will also upload app metadata if you previously ran `fastlane supply init`.
75
75
  To gradually roll out a new build use
76
76
 
77
77
  ```no-highlight
78
- fastlane supply --apk path/app.apk --track rollout --rollout 0.5
78
+ fastlane supply --apk path/app.apk --track beta --rollout 0.5
79
79
  ```
80
80
 
81
81
  ### Expansion files (`.obb`)
@@ -110,7 +110,7 @@ This will also upload app metadata if you previously ran `fastlane supply init`.
110
110
  To gradually roll out a new build use
111
111
 
112
112
  ```no-highlight
113
- fastlane supply --aab path/app.aab --track rollout --rollout 0.5
113
+ fastlane supply --aab path/app.aab --track beta --rollout 0.5
114
114
  ```
115
115
 
116
116
  ## Images and Screenshots
@@ -160,3 +160,27 @@ This can be done using the `--track_promote_to` parameter. The `--track_promote_
160
160
  ## Retrieve Track Version Codes
161
161
 
162
162
  Before performing a new APK upload you may want to check existing track version codes, or you may simply want to provide an informational lane that displays the currently promoted version codes for the production track. You can use the `google_play_track_version_codes` action to retrieve existing version codes for a package and track. For more information, see `fastlane action google_play_track_version_codes` help output.
163
+
164
+ ## Migration from AndroidPublisherV2 to AndroidPublisherV3 in _fastlane_ 2.135.0
165
+
166
+ ### New Options
167
+ - `:version_name`
168
+ - Used when uploading with `:apk_path`, `:apk_paths`, `:aab_path`, and `:aab_paths`
169
+ - Can be any string such (example: "October Release" or "Awesome New Feature")
170
+ - Defaults to the version name in app/build.gradle or AndroidManifest.xml
171
+ - `:release_status`
172
+ - Used when uploading with `:apk_path`, `:apk_paths`, `:aab_path`, and `:aab_paths`
173
+ - Can set as "draft" to complete the release at some other time
174
+ - Defaults to "completed"
175
+ - `:version_code`
176
+ - Used for `:update_rollout`, `:track_promote_to`, and uploading of meta data and screenshots
177
+ - `:skip_upload_changelogs`
178
+ - Changelogs were previously included with the `:skip_upload_metadata` but is now its own option
179
+
180
+ ### Deprecated Options
181
+ - `:check_superseded_tracks`
182
+ - Google Play will automatically remove releases that are superseded now
183
+ - `:deactivate_on_promote`
184
+ - Google Play will automatically deactive a release from its previous track on promote
185
+
186
+ :
@@ -26,6 +26,7 @@ module Fastlane
26
26
  platform = params[:platform]
27
27
  output_directory = params[:output_directory]
28
28
  wait_for_dsym_processing = params[:wait_for_dsym_processing]
29
+ wait_timeout = params[:wait_timeout]
29
30
  min_version = Gem::Version.new(params[:min_version]) if params[:min_version]
30
31
 
31
32
  # Set version if it is latest
@@ -45,6 +46,20 @@ module Fastlane
45
46
  version = latest_candidate_build.train_version
46
47
  build_number = latest_candidate_build.build_version
47
48
  end
49
+ elsif version == 'live'
50
+ UI.message("Looking for live version...")
51
+ live_version = app.live_version(platform: platform)
52
+
53
+ UI.user_error!("Could not find live version for your app, please try setting 'latest' or a specific version") if live_version.nil?
54
+
55
+ # No need to search for candidates, because released App Store version should only have one build
56
+ version = live_version.version
57
+ build_number = live_version.build_version
58
+ end
59
+
60
+ # Remove leading zeros from version string (eg. 1.02 -> 1.2)
61
+ if version
62
+ version = version.split(".").map(&:to_i).join(".")
48
63
  end
49
64
 
50
65
  # Make sure output_directory has a slash on the end
@@ -101,7 +116,7 @@ module Fastlane
101
116
  end
102
117
 
103
118
  unless download_url
104
- if !wait_for_dsym_processing || (Time.now - start) > (60 * 5)
119
+ if !wait_for_dsym_processing || (Time.now - start) > wait_timeout
105
120
  # In some cases, AppStoreConnect does not process the dSYMs, thus no error should be thrown.
106
121
  UI.message("Could not find any dSYM for #{build.build_version} (#{train.version_string})")
107
122
  else
@@ -231,7 +246,7 @@ module Fastlane
231
246
  FastlaneCore::ConfigItem.new(key: :version,
232
247
  short_option: "-v",
233
248
  env_name: "DOWNLOAD_DSYMS_VERSION",
234
- description: "The app version for dSYMs you wish to download, pass in 'latest' to download only the latest build's dSYMs",
249
+ description: "The app version for dSYMs you wish to download, pass in 'latest' to download only the latest build's dSYMs or 'live' to download only the live version dSYMs",
235
250
  optional: true),
236
251
  FastlaneCore::ConfigItem.new(key: :build_number,
237
252
  short_option: "-b",
@@ -254,7 +269,14 @@ module Fastlane
254
269
  description: "Wait for dSYMs to process",
255
270
  optional: true,
256
271
  default_value: false,
257
- type: Boolean)
272
+ type: Boolean),
273
+ FastlaneCore::ConfigItem.new(key: :wait_timeout,
274
+ short_option: "-t",
275
+ env_name: "DOWNLOAD_DSYMS_WAIT_TIMEOUT",
276
+ description: "Number of seconds to wait for dSYMs to process",
277
+ optional: true,
278
+ default_value: 300,
279
+ type: Integer)
258
280
  ]
259
281
  end
260
282
 
@@ -280,6 +302,7 @@ module Fastlane
280
302
  [
281
303
  'download_dsyms',
282
304
  'download_dsyms(version: "1.0.0", build_number: "345")',
305
+ 'download_dsyms(version: "live")',
283
306
  'download_dsyms(min_version: "1.2.3")'
284
307
  ]
285
308
  end