fastlane 2.237.0 → 2.238.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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +111 -104
  3. data/deliver/lib/deliver/options.rb +1 -1
  4. data/fastlane/lib/fastlane/actions/deploygate.rb +3 -2
  5. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +4 -2
  6. data/fastlane/lib/fastlane/actions/hockey.rb +3 -2
  7. data/fastlane/lib/fastlane/actions/installr.rb +3 -2
  8. data/fastlane/lib/fastlane/actions/mailgun.rb +1 -0
  9. data/fastlane/lib/fastlane/actions/notarize.rb +3 -18
  10. data/fastlane/lib/fastlane/actions/register_devices.rb +21 -5
  11. data/fastlane/lib/fastlane/actions/setup_ci.rb +7 -2
  12. data/fastlane/lib/fastlane/actions/spm.rb +6 -0
  13. data/fastlane/lib/fastlane/actions/testfairy.rb +5 -3
  14. data/fastlane/lib/fastlane/actions/tryouts.rb +3 -2
  15. data/fastlane/lib/fastlane/actions/update_project_team.rb +17 -9
  16. data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +33 -7
  17. data/fastlane/lib/fastlane/version.rb +1 -1
  18. data/fastlane/swift/Deliverfile.swift +1 -1
  19. data/fastlane/swift/DeliverfileProtocol.swift +2 -2
  20. data/fastlane/swift/Fastlane.swift +29 -19
  21. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +1 -1
  22. data/fastlane/swift/Gymfile.swift +1 -1
  23. data/fastlane/swift/GymfileProtocol.swift +1 -1
  24. data/fastlane/swift/Matchfile.swift +1 -1
  25. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  26. data/fastlane/swift/Precheckfile.swift +1 -1
  27. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  28. data/fastlane/swift/Scanfile.swift +1 -1
  29. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  30. data/fastlane/swift/Screengrabfile.swift +1 -1
  31. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  32. data/fastlane/swift/Snapshotfile.swift +1 -1
  33. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  34. data/fastlane_core/lib/fastlane_core/analytics/analytics_event_builder.rb +31 -5
  35. data/fastlane_core/lib/fastlane_core/analytics/analytics_ingester_client.rb +24 -12
  36. data/fastlane_core/lib/fastlane_core/analytics/analytics_session.rb +22 -12
  37. data/fastlane_core/lib/fastlane_core/cert_checker.rb +22 -9
  38. data/fastlane_core/lib/fastlane_core/helper.rb +4 -3
  39. data/fastlane_core/lib/fastlane_core/ipa_upload_package_builder.rb +6 -2
  40. data/fastlane_core/lib/fastlane_core/pkg_upload_package_builder.rb +1 -1
  41. data/fastlane_core/lib/fastlane_core/print_table.rb +0 -16
  42. data/fastlane_core/lib/fastlane_core/queue_worker.rb +10 -1
  43. data/fastlane_core/lib/fastlane_core/video_utils.rb +4 -2
  44. data/gym/lib/gym/module.rb +20 -2
  45. data/pilot/lib/pilot/build_manager.rb +2 -2
  46. data/pilot/lib/pilot/options.rb +2 -2
  47. data/pilot/lib/pilot/tester_manager.rb +2 -2
  48. data/precheck/lib/precheck/rules/copyright_date_rule.rb +1 -1
  49. data/precheck/lib/precheck/rules/unreachable_urls_rule.rb +2 -2
  50. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +4 -1
  51. data/spaceship/lib/spaceship/client.rb +0 -1
  52. data/spaceship/lib/spaceship/connect_api/file_uploader.rb +1 -1
  53. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +6 -0
  54. data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +5 -0
  55. data/spaceship/lib/spaceship/helper/plist_middleware.rb +37 -8
  56. metadata +71 -29
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2b25f32992804c871d4846acd7d3661e7549ed5012323d93b02ea4d545e57513
4
- data.tar.gz: db58ec0cdc765c9ca09fde8b45771de859a1e752f30607495a008e957ea4ec95
3
+ metadata.gz: b83a11ad4335b1a3c678c4a6d0f1aea9f6eb7ccd2fdda1392621a24be1ebc1b9
4
+ data.tar.gz: 40445027ea32c6b0a7d7c761f3aaa148ada6ac0d868f9d1212e68b1c0ff99940
5
5
  SHA512:
6
- metadata.gz: 3e6e654e96e3c57b1e93f624e0bffb0e93a5e7e984578c4e32d2c6831ebe54982e7d4d5c1752e47451f6d15be37e71b23a59eb6db98861206697bb98c1636bdb
7
- data.tar.gz: eee3973f328a2de3105a650295ecca9c0dd682c551fe28580ff8c8cc610e9988fa17fd09188e4895145b9c822964a09a13a4e92b70c60d15fc519f6ec202be46
6
+ metadata.gz: 915bb8bfd75b4e65b00c6213c861261aaa0b7e3b4ec5aaadc2c4029d90386d8682240628434983ec8891f5399798e584be4410ed1f37a11deb22d24cf61549e4
7
+ data.tar.gz: 206b83080b67e0feadc08b65e59e577ee63be8972826a17dc80ac102aeede7da6b11fe67f9b9c53c2ec6052ded492ae2850b78baecb8faa321dbe8904d079e74
data/README.md CHANGED
@@ -36,55 +36,55 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
36
36
  <!-- This table is regenerated and resorted on each release -->
37
37
  <table id='team'>
38
38
  <tr>
39
- <td id='connor-tumbleson'>
40
- <a href='https://github.com/ibotpeaches'>
41
- <img src='https://github.com/ibotpeaches.png' width='140px;'>
39
+ <td id='iulian-onofrei'>
40
+ <a href='https://github.com/revolter'>
41
+ <img src='https://github.com/revolter.png' width='140px;'>
42
42
  </a>
43
- <h4 align='center'><a href='https://twitter.com/ibotpeaches'>Connor Tumbleson</a></h4>
43
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
44
44
  </td>
45
- <td id='manu-wallner'>
46
- <a href='https://github.com/milch'>
47
- <img src='https://github.com/milch.png' width='140px;'>
45
+ <td id='helmut-januschka'>
46
+ <a href='https://github.com/hjanuschka'>
47
+ <img src='https://github.com/hjanuschka.png' width='140px;'>
48
48
  </a>
49
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
49
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
50
50
  </td>
51
- <td id='matthew-ellis'>
52
- <a href='https://github.com/matthewellis'>
53
- <img src='https://github.com/matthewellis.png' width='140px;'>
51
+ <td id='kohki-miki'>
52
+ <a href='https://github.com/giginet'>
53
+ <img src='https://github.com/giginet.png' width='140px;'>
54
54
  </a>
55
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
55
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
56
56
  </td>
57
- <td id='josh-holtz'>
58
- <a href='https://github.com/joshdholtz'>
59
- <img src='https://github.com/joshdholtz.png' width='140px;'>
57
+ <td id='felix-krause'>
58
+ <a href='https://github.com/KrauseFx'>
59
+ <img src='https://github.com/KrauseFx.png' width='140px;'>
60
60
  </a>
61
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
61
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
62
62
  </td>
63
- <td id='jorge-revuelta-h'>
64
- <a href='https://github.com/minuscorp'>
65
- <img src='https://github.com/minuscorp.png' width='140px;'>
63
+ <td id='olivier-halligon'>
64
+ <a href='https://github.com/AliSoftware'>
65
+ <img src='https://github.com/AliSoftware.png' width='140px;'>
66
66
  </a>
67
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
67
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
68
68
  </td>
69
69
  </tr>
70
70
  <tr>
71
- <td id='felix-krause'>
72
- <a href='https://github.com/KrauseFx'>
73
- <img src='https://github.com/KrauseFx.png' width='140px;'>
71
+ <td id='stefan-natchev'>
72
+ <a href='https://github.com/snatchev'>
73
+ <img src='https://github.com/snatchev.png' width='140px;'>
74
74
  </a>
75
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
75
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
76
76
  </td>
77
- <td id='maksym-grebenets'>
78
- <a href='https://github.com/mgrebenets'>
79
- <img src='https://github.com/mgrebenets.png' width='140px;'>
77
+ <td id='łukasz-grabowski'>
78
+ <a href='https://github.com/lucgrabowski'>
79
+ <img src='https://github.com/lucgrabowski.png' width='140px;'>
80
80
  </a>
81
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
81
+ <h4 align='center'>Łukasz Grabowski</h4>
82
82
  </td>
83
- <td id='kohki-miki'>
84
- <a href='https://github.com/giginet'>
85
- <img src='https://github.com/giginet.png' width='140px;'>
83
+ <td id='luka-mirosevic'>
84
+ <a href='https://github.com/lmirosevic'>
85
+ <img src='https://github.com/lmirosevic.png' width='140px;'>
86
86
  </a>
87
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
87
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
88
88
  </td>
89
89
  <td id='joshua-liebowitz'>
90
90
  <a href='https://github.com/taquitos'>
@@ -92,121 +92,121 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
92
92
  </a>
93
93
  <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
94
94
  </td>
95
- <td id='luka-mirosevic'>
96
- <a href='https://github.com/lmirosevic'>
97
- <img src='https://github.com/lmirosevic.png' width='140px;'>
95
+ <td id='daniel-jankowski'>
96
+ <a href='https://github.com/mollyIV'>
97
+ <img src='https://github.com/mollyIV.png' width='140px;'>
98
98
  </a>
99
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
99
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
100
100
  </td>
101
101
  </tr>
102
102
  <tr>
103
- <td id='jan-piotrowski'>
104
- <a href='https://github.com/janpio'>
105
- <img src='https://github.com/janpio.png' width='140px;'>
103
+ <td id='fumiya-nakamura'>
104
+ <a href='https://github.com/nafu'>
105
+ <img src='https://github.com/nafu.png' width='140px;'>
106
106
  </a>
107
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
107
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
108
108
  </td>
109
- <td id='stefan-natchev'>
110
- <a href='https://github.com/snatchev'>
111
- <img src='https://github.com/snatchev.png' width='140px;'>
109
+ <td id='manish-rathi'>
110
+ <a href='https://github.com/crazymanish'>
111
+ <img src='https://github.com/crazymanish.png' width='140px;'>
112
112
  </a>
113
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
113
+ <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
114
114
  </td>
115
- <td id='max-ott'>
116
- <a href='https://github.com/max-ott'>
117
- <img src='https://github.com/max-ott.png' width='140px;'>
115
+ <td id='maksym-grebenets'>
116
+ <a href='https://github.com/mgrebenets'>
117
+ <img src='https://github.com/mgrebenets.png' width='140px;'>
118
118
  </a>
119
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
119
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
120
120
  </td>
121
- <td id='roger-oba'>
122
- <a href='https://github.com/rogerluan'>
123
- <img src='https://github.com/rogerluan.png' width='140px;'>
121
+ <td id='matthew-ellis'>
122
+ <a href='https://github.com/matthewellis'>
123
+ <img src='https://github.com/matthewellis.png' width='140px;'>
124
124
  </a>
125
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
125
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
126
126
  </td>
127
- <td id='jérôme-lacoste'>
128
- <a href='https://github.com/lacostej'>
129
- <img src='https://github.com/lacostej.png' width='140px;'>
127
+ <td id='satoshi-namai'>
128
+ <a href='https://github.com/ainame'>
129
+ <img src='https://github.com/ainame.png' width='140px;'>
130
130
  </a>
131
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
131
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
132
132
  </td>
133
133
  </tr>
134
134
  <tr>
135
- <td id='iulian-onofrei'>
136
- <a href='https://github.com/revolter'>
137
- <img src='https://github.com/revolter.png' width='140px;'>
135
+ <td id='jimmy-dee'>
136
+ <a href='https://github.com/jdee'>
137
+ <img src='https://github.com/jdee.png' width='140px;'>
138
138
  </a>
139
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
139
+ <h4 align='center'>Jimmy Dee</h4>
140
140
  </td>
141
- <td id='aaron-brager'>
142
- <a href='https://github.com/getaaron'>
143
- <img src='https://github.com/getaaron.png' width='140px;'>
141
+ <td id='manu-wallner'>
142
+ <a href='https://github.com/milch'>
143
+ <img src='https://github.com/milch.png' width='140px;'>
144
144
  </a>
145
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
145
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
146
146
  </td>
147
- <td id='daniel-jankowski'>
148
- <a href='https://github.com/mollyIV'>
149
- <img src='https://github.com/mollyIV.png' width='140px;'>
147
+ <td id='andrew-mcburney'>
148
+ <a href='https://github.com/armcburney'>
149
+ <img src='https://github.com/armcburney.png' width='140px;'>
150
150
  </a>
151
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
151
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
152
152
  </td>
153
- <td id='manish-rathi'>
154
- <a href='https://github.com/crazymanish'>
155
- <img src='https://github.com/crazymanish.png' width='140px;'>
153
+ <td id='jan-piotrowski'>
154
+ <a href='https://github.com/janpio'>
155
+ <img src='https://github.com/janpio.png' width='140px;'>
156
156
  </a>
157
- <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
157
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
158
158
  </td>
159
- <td id='danielle-tomlinson'>
160
- <a href='https://github.com/endocrimes'>
161
- <img src='https://github.com/endocrimes.png' width='140px;'>
159
+ <td id='jorge-revuelta-h'>
160
+ <a href='https://github.com/minuscorp'>
161
+ <img src='https://github.com/minuscorp.png' width='140px;'>
162
162
  </a>
163
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
163
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
164
164
  </td>
165
165
  </tr>
166
166
  <tr>
167
- <td id='satoshi-namai'>
168
- <a href='https://github.com/ainame'>
169
- <img src='https://github.com/ainame.png' width='140px;'>
167
+ <td id='jérôme-lacoste'>
168
+ <a href='https://github.com/lacostej'>
169
+ <img src='https://github.com/lacostej.png' width='140px;'>
170
170
  </a>
171
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
171
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
172
172
  </td>
173
- <td id='helmut-januschka'>
174
- <a href='https://github.com/hjanuschka'>
175
- <img src='https://github.com/hjanuschka.png' width='140px;'>
173
+ <td id='connor-tumbleson'>
174
+ <a href='https://github.com/ibotpeaches'>
175
+ <img src='https://github.com/ibotpeaches.png' width='140px;'>
176
176
  </a>
177
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
177
+ <h4 align='center'><a href='https://twitter.com/ibotpeaches'>Connor Tumbleson</a></h4>
178
178
  </td>
179
- <td id='andrew-mcburney'>
180
- <a href='https://github.com/armcburney'>
181
- <img src='https://github.com/armcburney.png' width='140px;'>
179
+ <td id='roger-oba'>
180
+ <a href='https://github.com/rogerluan'>
181
+ <img src='https://github.com/rogerluan.png' width='140px;'>
182
182
  </a>
183
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
183
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
184
184
  </td>
185
- <td id='olivier-halligon'>
186
- <a href='https://github.com/AliSoftware'>
187
- <img src='https://github.com/AliSoftware.png' width='140px;'>
185
+ <td id='aaron-brager'>
186
+ <a href='https://github.com/getaaron'>
187
+ <img src='https://github.com/getaaron.png' width='140px;'>
188
188
  </a>
189
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
189
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
190
190
  </td>
191
- <td id='jimmy-dee'>
192
- <a href='https://github.com/jdee'>
193
- <img src='https://github.com/jdee.png' width='140px;'>
191
+ <td id='max-ott'>
192
+ <a href='https://github.com/max-ott'>
193
+ <img src='https://github.com/max-ott.png' width='140px;'>
194
194
  </a>
195
- <h4 align='center'>Jimmy Dee</h4>
195
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
196
196
  </td>
197
197
  </tr>
198
198
  <tr>
199
- <td id='fumiya-nakamura'>
200
- <a href='https://github.com/nafu'>
201
- <img src='https://github.com/nafu.png' width='140px;'>
199
+ <td id='josh-holtz'>
200
+ <a href='https://github.com/joshdholtz'>
201
+ <img src='https://github.com/joshdholtz.png' width='140px;'>
202
202
  </a>
203
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
203
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
204
204
  </td>
205
- <td id='łukasz-grabowski'>
206
- <a href='https://github.com/lucgrabowski'>
207
- <img src='https://github.com/lucgrabowski.png' width='140px;'>
205
+ <td id='danielle-tomlinson'>
206
+ <a href='https://github.com/endocrimes'>
207
+ <img src='https://github.com/endocrimes.png' width='140px;'>
208
208
  </a>
209
- <h4 align='center'>Łukasz Grabowski</h4>
209
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
210
210
  </td>
211
211
  </table>
212
212
 
@@ -226,6 +226,13 @@ _fastlane_ tracks a few key metrics to understand how developers are using the t
226
226
 
227
227
  * The number of _fastlane_ runs
228
228
  * A salted hash of the app identifier or package name, which helps us anonymously identify unique usage of _fastlane_
229
+ * How _fastlane_ is executed (Swift vs Ruby)
230
+ * The _fastlane_ version
231
+ * How _fastlane_ was installed (Homebrew, gem, bundler, etc)
232
+ * The Ruby version
233
+ * The Operating System in use
234
+ * The Xcode version
235
+ * Whether it was run in non-interactively or interactively
229
236
 
230
237
  You can easily opt-out of metrics collection by adding `opt_out_usage` at the top of your `Fastfile` or by setting the environment variable `FASTLANE_OPT_OUT_USAGE`. [Check out the metrics code on GitHub](https://github.com/fastlane/fastlane/tree/master/fastlane_core/lib/fastlane_core/analytics)
231
238
 
@@ -326,7 +326,7 @@ module Deliver
326
326
  # rubocop:disable Layout/LineLength
327
327
  FastlaneCore::ConfigItem.new(key: :itc_provider,
328
328
  env_name: "DELIVER_ITC_PROVIDER",
329
- description: "The provider short name to be used with the iTMSTransporter to identify your team. This value will override the automatically detected provider short name. To get provider short name run `pathToXcode.app/Contents/Applications/Application\\ Loader.app/Contents/itms/bin/iTMSTransporter -m provider -u 'USERNAME' -p 'PASSWORD' -account_type itunes_connect -v off`. The short names of providers should be listed in the second column",
329
+ description: "The provider short name to be used with the iTMSTransporter to identify your team. This value will override the automatically detected provider short name. To get provider short name run `xcrun iTMSTransporter -m provider -u 'USERNAME' -p 'PASSWORD' -account_type itunes_connect -v off`. The short names of providers should be listed in the second column",
330
330
  optional: true,
331
331
  code_gen_sensitive: true,
332
332
  default_value: CredentialsManager::AppfileConfig.try_fetch_value(:itc_provider),
@@ -15,13 +15,14 @@ module Fastlane
15
15
 
16
16
  def self.upload_build(api_token, user_name, binary, options)
17
17
  require 'faraday'
18
- require 'faraday_middleware'
18
+ require 'faraday/multipart'
19
+ require 'faraday/follow_redirects'
19
20
 
20
21
  connection = Faraday.new(url: DEPLOYGATE_URL_BASE, request: { timeout: 120 }) do |builder|
21
22
  builder.request(:multipart)
22
23
  builder.request(:json)
23
24
  builder.response(:json, content_type: /\bjson$/)
24
- builder.use(FaradayMiddleware::FollowRedirects)
25
+ builder.response(:follow_redirects)
25
26
  builder.adapter(:net_http)
26
27
  end
27
28
 
@@ -414,9 +414,9 @@ apple_watch_app_icon('./AppleWatchAppIcon.png')
414
414
 
415
415
  The platform of your application (a.e. ios, osx).
416
416
 
417
- This option is optional. The default value is "ios" and deliver should be able to figure out the platform from your binary.
417
+ This option is optional. The default value is "ios" and deliver will ignore this option and figure out the platform from your binary if exactly one binary is present.
418
418
 
419
- However, in the case if multiple binaries present, you can specify a platform which you want to deliver explicitly.
419
+ However, in the cases of no binaries or multiple binaries being present, you can specify a platform which you want to deliver explicitly.
420
420
 
421
421
  The available options:
422
422
 
@@ -697,6 +697,8 @@ Key | Editable While Live | Directory | Filename
697
697
  - `profanityOrCrudeHumor`
698
698
  - `sexualContentGraphicAndNudity`
699
699
  - `sexualContentOrNudity`
700
+ - `socialMedia`
701
+ - `socialMediaAgeRestricted`
700
702
  - `violenceCartoonOrFantasy`
701
703
  - `violenceRealistic`
702
704
  - `violenceRealisticProlongedGraphicOrSadistic`
@@ -9,7 +9,8 @@ module Fastlane
9
9
  class HockeyAction < Action
10
10
  def self.connection(options)
11
11
  require 'faraday'
12
- require 'faraday_middleware'
12
+ require 'faraday/multipart'
13
+ require 'faraday/follow_redirects'
13
14
 
14
15
  base_url = options.delete(:bypass_cdn) ? "https://rink.hockeyapp.net" : "https://upload.hockeyapp.net"
15
16
  foptions = {
@@ -19,7 +20,7 @@ module Fastlane
19
20
  builder.request(:multipart)
20
21
  builder.request(:url_encoded)
21
22
  builder.response(:json, content_type: /\bjson$/)
22
- builder.use(FaradayMiddleware::FollowRedirects)
23
+ builder.response(:follow_redirects)
23
24
  builder.adapter(:net_http)
24
25
  end
25
26
  end
@@ -23,14 +23,15 @@ module Fastlane
23
23
 
24
24
  def self.upload_build(params)
25
25
  require 'faraday'
26
- require 'faraday_middleware'
26
+ require 'faraday/multipart'
27
+ require 'faraday/follow_redirects'
27
28
 
28
29
  url = INSTALLR_API
29
30
  connection = Faraday.new(url) do |builder|
30
31
  builder.request(:multipart)
31
32
  builder.request(:url_encoded)
32
33
  builder.response(:json, content_type: /\bjson$/)
33
- builder.use(FaradayMiddleware::FollowRedirects)
34
+ builder.response(:follow_redirects)
34
35
  builder.adapter(:net_http)
35
36
  end
36
37
 
@@ -137,6 +137,7 @@ module Fastlane
137
137
  params.store(:attachment, attachments)
138
138
  end
139
139
 
140
+ require 'faraday/multipart'
140
141
  conn = Faraday.new(url: "https://api:#{options[:apikey]}@api.mailgun.net") do |f|
141
142
  f.request(:multipart)
142
143
  f.request(:url_encoded)
@@ -4,7 +4,6 @@ module Fastlane
4
4
  # rubocop:disable Metrics/PerceivedComplexity
5
5
  def self.run(params)
6
6
  package_path = params[:package]
7
- bundle_id = params[:bundle_id]
8
7
  skip_stapling = params[:skip_stapling]
9
8
  print_log = params[:print_log]
10
9
  verbose = params[:verbose]
@@ -15,7 +14,7 @@ module Fastlane
15
14
  end
16
15
  api_key = Spaceship::ConnectAPI::Token.from(hash: params[:api_key], filepath: params[:api_key_path])
17
16
 
18
- # Compress and read bundle identifier only for .app bundle.
17
+ # Compress only if .app bundle
19
18
  compressed_package_path = nil
20
19
  if File.extname(package_path) == '.app'
21
20
  compressed_package_path = "#{package_path}.zip"
@@ -23,22 +22,12 @@ module Fastlane
23
22
  "ditto -c -k --rsrc --keepParent \"#{package_path}\" \"#{compressed_package_path}\"",
24
23
  log: verbose
25
24
  )
26
-
27
- unless bundle_id
28
- info_plist_path = File.join(package_path, 'Contents', 'Info.plist')
29
- bundle_id = Actions.sh(
30
- "/usr/libexec/PlistBuddy -c \"Print :CFBundleIdentifier\" \"#{info_plist_path}\"",
31
- log: verbose
32
- ).strip
33
- end
34
25
  end
35
26
 
36
- UI.user_error!('Could not read bundle identifier, provide as a parameter') unless bundle_id
37
-
38
- notarytool(params, package_path, bundle_id, skip_stapling, print_log, verbose, api_key, compressed_package_path)
27
+ notarytool(params, package_path, skip_stapling, print_log, verbose, api_key, compressed_package_path)
39
28
  end
40
29
 
41
- def self.notarytool(params, package_path, bundle_id, skip_stapling, print_log, verbose, api_key, compressed_package_path)
30
+ def self.notarytool(params, package_path, skip_stapling, print_log, verbose, api_key, compressed_package_path)
42
31
  temp_file = nil
43
32
 
44
33
  # Create authorization part of command with either API Key or Apple ID
@@ -154,10 +143,6 @@ module Fastlane
154
143
  optional: true,
155
144
  default_value: false,
156
145
  type: Boolean),
157
- FastlaneCore::ConfigItem.new(key: :bundle_id,
158
- env_name: 'FL_NOTARIZE_BUNDLE_ID',
159
- description: 'Bundle identifier to uniquely identify the package',
160
- optional: true),
161
146
  FastlaneCore::ConfigItem.new(key: :username,
162
147
  env_name: 'FL_NOTARIZE_USERNAME',
163
148
  description: 'Apple ID username',
@@ -11,6 +11,10 @@ module Fastlane
11
11
  ['Device ID', 'Device Name', 'Device Platform']
12
12
  end
13
13
 
14
+ def self.ignored_line?(row)
15
+ row.all? { |value| value.to_s.strip.empty? } || row.first.to_s.strip.start_with?('#')
16
+ end
17
+
14
18
  def self.run(params)
15
19
  platform = Spaceship::ConnectAPI::BundleIdPlatform.map(params[:platform])
16
20
 
@@ -22,6 +26,7 @@ module Fastlane
22
26
  require 'csv'
23
27
 
24
28
  devices_file = CSV.read(File.expand_path(File.join(params[:devices_file])), col_sep: "\t")
29
+ devices_file = devices_file.reject { |row| ignored_line?(row) }
25
30
  unless devices_file.first == file_column_headers.first(2) || devices_file.first == file_column_headers
26
31
  UI.user_error!("Please provide a file according to the Apple Sample UDID file (https://developer.apple.com/account/resources/downloads/Multiple-Upload-Samples.zip)")
27
32
  end
@@ -55,8 +60,14 @@ module Fastlane
55
60
  existing_devices = Spaceship::ConnectAPI::Device.all
56
61
 
57
62
  device_objs = new_devices.map do |device|
58
- if existing_devices.map(&:udid).map(&:downcase).include?(device[0].downcase)
59
- UI.verbose("UDID #{device[0]} already exists - Skipping...")
63
+ normalized_udid = device[0].tr("-", "")
64
+ existing_device = existing_devices.find do |ed|
65
+ ed.udid.tr("-", "").casecmp(normalized_udid).zero?
66
+ end
67
+
68
+ if existing_device
69
+ UI.verbose("UDID #{existing_device.udid} already exists - Skipping...")
70
+
60
71
  next
61
72
  end
62
73
 
@@ -74,8 +85,12 @@ module Fastlane
74
85
  try_create_device(name: device[1], platform: device_platform, udid: device[0])
75
86
  end
76
87
 
77
- UI.success("Successfully registered new devices.")
78
- return device_objs
88
+ if device_objs.compact.empty?
89
+ UI.success("No new devices to register")
90
+ else
91
+ UI.success("Successfully registered new devices.")
92
+ end
93
+ return device_objs.compact
79
94
  end
80
95
 
81
96
  def self.try_create_device(name: nil, platform: nil, udid: nil)
@@ -169,7 +184,8 @@ module Fastlane
169
184
  [
170
185
  "This will register iOS/Mac devices with the Developer Portal so that you can include them in your provisioning profiles.",
171
186
  "This is an optimistic action, in that it will only ever add new devices to the member center, and never remove devices. If a device which has already been registered within the member center is not passed to this action, it will be left alone in the member center and continue to work.",
172
- "The action will connect to the Apple Developer Portal using the username you specified in your `Appfile` with `apple_id`, but you can override it using the `username` option, or by setting the env variable `ENV['DELIVER_USER']`."
187
+ "The action will connect to the Apple Developer Portal using the username you specified in your `Appfile` with `apple_id`, but you can override it using the `username` option, or by setting the env variable `ENV['DELIVER_USER']`.",
188
+ "When using `devices_file`, blank lines and lines starting with `#` are ignored, so you can group devices, add notes, or comment out a device row without removing it."
173
189
  ].join("\n")
174
190
  end
175
191
 
@@ -41,7 +41,7 @@ module Fastlane
41
41
  UI.message("Creating temporary keychain: \"#{keychain_name}\".")
42
42
  Actions::CreateKeychainAction.run(
43
43
  name: keychain_name,
44
- default_keychain: true,
44
+ default_keychain: params[:set_default_keychain],
45
45
  unlock: true,
46
46
  timeout: params[:timeout],
47
47
  lock_when_sleeps: true,
@@ -113,7 +113,12 @@ module Fastlane
113
113
  env_name: "FL_SETUP_CI_KEYCHAIN_NAME",
114
114
  description: "Set a custom keychain name",
115
115
  type: String,
116
- default_value: "fastlane_tmp_keychain")
116
+ default_value: "fastlane_tmp_keychain"),
117
+ FastlaneCore::ConfigItem.new(key: :set_default_keychain,
118
+ env_name: "FL_SETUP_CI_SET_DEFAULT_KEYCHAIN",
119
+ description: "Set the temporary keychain as the system default",
120
+ type: Boolean,
121
+ default_value: true)
117
122
  ]
118
123
  end
119
124
 
@@ -10,6 +10,7 @@ module Fastlane
10
10
  cmd << "--package-path #{params[:package_path]}" if params[:package_path]
11
11
  cmd << "--configuration #{params[:configuration]}" if params[:configuration]
12
12
  cmd << "--disable-sandbox" if params[:disable_sandbox]
13
+ cmd << "--skip-update" if params[:skip_update]
13
14
  cmd << "--verbose" if params[:verbose]
14
15
  cmd << "--very-verbose" if params[:very_verbose]
15
16
  if params[:simulator]
@@ -113,6 +114,11 @@ module Fastlane
113
114
  description: "Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf'), requires xcpretty_output to be specified also",
114
115
  type: String,
115
116
  optional: true),
117
+ FastlaneCore::ConfigItem.new(key: :skip_update,
118
+ env_name: "FL_SPM_SKIP_UPDATE",
119
+ description: "Skip updating dependencies from their remote during a resolution",
120
+ type: Boolean,
121
+ default_value: false),
116
122
  FastlaneCore::ConfigItem.new(key: :verbose,
117
123
  short_option: "-v",
118
124
  env_name: "FL_SPM_VERBOSE",
@@ -9,16 +9,18 @@ module Fastlane
9
9
  class TestfairyAction < Action
10
10
  def self.upload_build(upload_url, ipa, options, timeout)
11
11
  require 'faraday'
12
- require 'faraday_middleware'
12
+ require 'faraday/multipart'
13
+ require 'faraday/retry'
14
+ require 'faraday/follow_redirects'
13
15
 
14
16
  UI.success("Uploading to #{upload_url}...")
15
17
 
16
18
  connection = Faraday.new(url: upload_url) do |builder|
17
19
  builder.request(:multipart)
18
20
  builder.request(:url_encoded)
19
- builder.request(:retry, max: 3, interval: 5)
21
+ builder.request(:retry, { max: 3, interval: 5 })
20
22
  builder.response(:json, content_type: /\bjson$/)
21
- builder.use(FaradayMiddleware::FollowRedirects)
23
+ builder.response(:follow_redirects)
22
24
  builder.adapter(:net_http)
23
25
  end
24
26
 
@@ -24,14 +24,15 @@ module Fastlane
24
24
 
25
25
  def self.upload_build(params)
26
26
  require 'faraday'
27
- require 'faraday_middleware'
27
+ require 'faraday/multipart'
28
+ require 'faraday/follow_redirects'
28
29
 
29
30
  url = TRYOUTS_API_BUILD_RELEASE_TEMPLATE % params[:app_id]
30
31
  connection = Faraday.new(url) do |builder|
31
32
  builder.request(:multipart)
32
33
  builder.request(:url_encoded)
33
34
  builder.response(:json, content_type: /\bjson$/)
34
- builder.use(FaradayMiddleware::FollowRedirects)
35
+ builder.response(:follow_redirects)
35
36
  builder.adapter(:net_http)
36
37
  end
37
38