fastlane 2.205.2 → 2.206.2

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 (48) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +96 -96
  3. data/cert/lib/cert/runner.rb +15 -7
  4. data/deliver/lib/deliver/options.rb +5 -0
  5. data/deliver/lib/deliver/runner.rb +45 -0
  6. data/fastlane/lib/fastlane/actions/.supply.rb.swp +0 -0
  7. data/fastlane/lib/fastlane/actions/danger.rb +14 -0
  8. data/fastlane/lib/fastlane/actions/run_tests.rb +1 -7
  9. data/fastlane/lib/fastlane/actions/setup_ci.rb +13 -4
  10. data/fastlane/lib/fastlane/cli_tools_distributor.rb +5 -0
  11. data/fastlane/lib/fastlane/lane_manager.rb +1 -1
  12. data/fastlane/lib/fastlane/tools.rb +16 -0
  13. data/fastlane/lib/fastlane/version.rb +1 -1
  14. data/fastlane/swift/Deliverfile.swift +1 -1
  15. data/fastlane/swift/DeliverfileProtocol.swift +5 -1
  16. data/fastlane/swift/Fastlane.swift +39 -3
  17. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/joshholtz.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  18. data/fastlane/swift/Gymfile.swift +1 -1
  19. data/fastlane/swift/GymfileProtocol.swift +1 -1
  20. data/fastlane/swift/MainProcess.swift +2 -2
  21. data/fastlane/swift/Matchfile.swift +1 -1
  22. data/fastlane/swift/MatchfileProtocol.swift +5 -1
  23. data/fastlane/swift/Precheckfile.swift +1 -1
  24. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  25. data/fastlane/swift/Scanfile.swift +1 -1
  26. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  27. data/fastlane/swift/Screengrabfile.swift +1 -1
  28. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  29. data/fastlane/swift/Snapshotfile.swift +1 -1
  30. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  31. data/fastlane/swift/formatting/Brewfile.lock.json +13 -13
  32. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +90 -0
  33. data/match/lib/match/importer.rb +3 -1
  34. data/match/lib/match/options.rb +5 -0
  35. data/match/lib/match/runner.rb +1 -0
  36. data/match/lib/match/storage/google_cloud_storage.rb +7 -6
  37. data/pem/lib/pem/manager.rb +1 -1
  38. data/scan/lib/scan/options.rb +6 -1
  39. data/scan/lib/scan/runner.rb +10 -2
  40. data/sigh/lib/sigh/runner.rb +2 -1
  41. data/spaceship/lib/spaceship/connect_api/models/app.rb +1 -2
  42. data/spaceship/lib/spaceship/connect_api/models/build_delivery.rb +2 -1
  43. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +1 -0
  44. data/spaceship/lib/spaceship/connect_api/models/user.rb +5 -0
  45. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +24 -2
  46. data/spaceship/lib/spaceship/connect_api/token.rb +5 -2
  47. metadata +22 -21
  48. data/fastlane/lib/fastlane/actions/.update_project_provisioning.rb.swp +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 99bb2c0fa94820f0eb1ec2f139dc5030f807e8e63bf01ee05bbed205a944323e
4
- data.tar.gz: 0b01b0e06b4ede6934aa4394e23f9b35d3c2e29de98a7efb5c80e1d294fc7257
3
+ metadata.gz: 8709bb6f807e965a0a9994a1fedefa13e0b92a05d9424308cd7cbcac25a5e02f
4
+ data.tar.gz: f45bede96abcdeb1307634c05547123266ce8c3e4e8a2ca2d078c112df9c5c00
5
5
  SHA512:
6
- metadata.gz: 8bf0e382cb0a1cc33848ec498eb8867df9ea52c4865fd68f9c4be3bcdde7a1a1e4b6d4b954667fff49fe2cb2435c6e1c9cb1d7d4b520696715d0bec0a29b19ce
7
- data.tar.gz: f3c6672ecbea5bb3cf3d7b982b8328ede9a29d506b0de7c7a181948ed480212ed7ed4d1e571d3a23716583802d83e84011c6b50f970ab3dd163ed2259a1e09cf
6
+ metadata.gz: 7051a939573b286ec7c73e050824b8683266f4560ef4ea4787d8b3f19c238130fa1ac1426e157f545655470a7be32bc99496d1ca813387fd9c37488342a7b0bd
7
+ data.tar.gz: b84234e26b2fb02313170410c0e23c26729cc6f4cb35f899265eabec327f9a09cb0542f042f6cd99e9c5101132c257f256a53f4d7352a50a6c77376f90a0003b
data/README.md CHANGED
@@ -35,11 +35,17 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
35
35
  <!-- This table is regenerated and resorted on each release -->
36
36
  <table id='team'>
37
37
  <tr>
38
- <td id='matthew-ellis'>
39
- <a href='https://github.com/matthewellis'>
40
- <img src='https://github.com/matthewellis.png' width='140px;'>
38
+ <td id='olivier-halligon'>
39
+ <a href='https://github.com/AliSoftware'>
40
+ <img src='https://github.com/AliSoftware.png' width='140px;'>
41
41
  </a>
42
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
42
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
43
+ </td>
44
+ <td id='maksym-grebenets'>
45
+ <a href='https://github.com/mgrebenets'>
46
+ <img src='https://github.com/mgrebenets.png' width='140px;'>
47
+ </a>
48
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
43
49
  </td>
44
50
  <td id='iulian-onofrei'>
45
51
  <a href='https://github.com/revolter'>
@@ -47,113 +53,101 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
47
53
  </a>
48
54
  <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
49
55
  </td>
50
- <td id='jimmy-dee'>
51
- <a href='https://github.com/jdee'>
52
- <img src='https://github.com/jdee.png' width='140px;'>
53
- </a>
54
- <h4 align='center'>Jimmy Dee</h4>
55
- </td>
56
- <td id='max-ott'>
57
- <a href='https://github.com/max-ott'>
58
- <img src='https://github.com/max-ott.png' width='140px;'>
56
+ <td id='satoshi-namai'>
57
+ <a href='https://github.com/ainame'>
58
+ <img src='https://github.com/ainame.png' width='140px;'>
59
59
  </a>
60
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
60
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
61
61
  </td>
62
- <td id='roger-oba'>
63
- <a href='https://github.com/rogerluan'>
64
- <img src='https://github.com/rogerluan.png' width='140px;'>
62
+ <td id='stefan-natchev'>
63
+ <a href='https://github.com/snatchev'>
64
+ <img src='https://github.com/snatchev.png' width='140px;'>
65
65
  </a>
66
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
66
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
67
67
  </td>
68
68
  </tr>
69
69
  <tr>
70
- <td id='daniel-jankowski'>
71
- <a href='https://github.com/mollyIV'>
72
- <img src='https://github.com/mollyIV.png' width='140px;'>
70
+ <td id='jimmy-dee'>
71
+ <a href='https://github.com/jdee'>
72
+ <img src='https://github.com/jdee.png' width='140px;'>
73
73
  </a>
74
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
74
+ <h4 align='center'>Jimmy Dee</h4>
75
75
  </td>
76
- <td id='josh-holtz'>
77
- <a href='https://github.com/joshdholtz'>
78
- <img src='https://github.com/joshdholtz.png' width='140px;'>
76
+ <td id='andrew-mcburney'>
77
+ <a href='https://github.com/armcburney'>
78
+ <img src='https://github.com/armcburney.png' width='140px;'>
79
79
  </a>
80
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
80
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
81
81
  </td>
82
- <td id='stefan-natchev'>
83
- <a href='https://github.com/snatchev'>
84
- <img src='https://github.com/snatchev.png' width='140px;'>
82
+ <td id='luka-mirosevic'>
83
+ <a href='https://github.com/lmirosevic'>
84
+ <img src='https://github.com/lmirosevic.png' width='140px;'>
85
85
  </a>
86
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
86
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
87
87
  </td>
88
- <td id='jérôme-lacoste'>
89
- <a href='https://github.com/lacostej'>
90
- <img src='https://github.com/lacostej.png' width='140px;'>
88
+ <td id='jorge-revuelta-h'>
89
+ <a href='https://github.com/minuscorp'>
90
+ <img src='https://github.com/minuscorp.png' width='140px;'>
91
91
  </a>
92
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
92
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
93
93
  </td>
94
- <td id='jan-piotrowski'>
95
- <a href='https://github.com/janpio'>
96
- <img src='https://github.com/janpio.png' width='140px;'>
94
+ <td id='aaron-brager'>
95
+ <a href='https://github.com/getaaron'>
96
+ <img src='https://github.com/getaaron.png' width='140px;'>
97
97
  </a>
98
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
98
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
99
99
  </td>
100
100
  </tr>
101
101
  <tr>
102
- <td id='łukasz-grabowski'>
103
- <a href='https://github.com/lucgrabowski'>
104
- <img src='https://github.com/lucgrabowski.png' width='140px;'>
102
+ <td id='joshua-liebowitz'>
103
+ <a href='https://github.com/taquitos'>
104
+ <img src='https://github.com/taquitos.png' width='140px;'>
105
105
  </a>
106
- <h4 align='center'>Łukasz Grabowski</h4>
106
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
107
107
  </td>
108
- <td id='maksym-grebenets'>
109
- <a href='https://github.com/mgrebenets'>
110
- <img src='https://github.com/mgrebenets.png' width='140px;'>
108
+ <td id='danielle-tomlinson'>
109
+ <a href='https://github.com/endocrimes'>
110
+ <img src='https://github.com/endocrimes.png' width='140px;'>
111
111
  </a>
112
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
112
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
113
113
  </td>
114
- <td id='fumiya-nakamura'>
115
- <a href='https://github.com/nafu'>
116
- <img src='https://github.com/nafu.png' width='140px;'>
114
+ <td id='jérôme-lacoste'>
115
+ <a href='https://github.com/lacostej'>
116
+ <img src='https://github.com/lacostej.png' width='140px;'>
117
117
  </a>
118
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
118
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
119
119
  </td>
120
- <td id='jorge-revuelta-h'>
121
- <a href='https://github.com/minuscorp'>
122
- <img src='https://github.com/minuscorp.png' width='140px;'>
120
+ <td id='josh-holtz'>
121
+ <a href='https://github.com/joshdholtz'>
122
+ <img src='https://github.com/joshdholtz.png' width='140px;'>
123
123
  </a>
124
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
124
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
125
125
  </td>
126
- <td id='andrew-mcburney'>
127
- <a href='https://github.com/armcburney'>
128
- <img src='https://github.com/armcburney.png' width='140px;'>
126
+ <td id='jan-piotrowski'>
127
+ <a href='https://github.com/janpio'>
128
+ <img src='https://github.com/janpio.png' width='140px;'>
129
129
  </a>
130
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
130
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
131
131
  </td>
132
132
  </tr>
133
133
  <tr>
134
- <td id='olivier-halligon'>
135
- <a href='https://github.com/AliSoftware'>
136
- <img src='https://github.com/AliSoftware.png' width='140px;'>
137
- </a>
138
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
139
- </td>
140
- <td id='kohki-miki'>
141
- <a href='https://github.com/giginet'>
142
- <img src='https://github.com/giginet.png' width='140px;'>
134
+ <td id='max-ott'>
135
+ <a href='https://github.com/max-ott'>
136
+ <img src='https://github.com/max-ott.png' width='140px;'>
143
137
  </a>
144
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
138
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
145
139
  </td>
146
- <td id='luka-mirosevic'>
147
- <a href='https://github.com/lmirosevic'>
148
- <img src='https://github.com/lmirosevic.png' width='140px;'>
140
+ <td id='daniel-jankowski'>
141
+ <a href='https://github.com/mollyIV'>
142
+ <img src='https://github.com/mollyIV.png' width='140px;'>
149
143
  </a>
150
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
144
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
151
145
  </td>
152
- <td id='danielle-tomlinson'>
153
- <a href='https://github.com/endocrimes'>
154
- <img src='https://github.com/endocrimes.png' width='140px;'>
146
+ <td id='roger-oba'>
147
+ <a href='https://github.com/rogerluan'>
148
+ <img src='https://github.com/rogerluan.png' width='140px;'>
155
149
  </a>
156
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
150
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
157
151
  </td>
158
152
  <td id='helmut-januschka'>
159
153
  <a href='https://github.com/hjanuschka'>
@@ -161,13 +155,19 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
161
155
  </a>
162
156
  <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
163
157
  </td>
158
+ <td id='fumiya-nakamura'>
159
+ <a href='https://github.com/nafu'>
160
+ <img src='https://github.com/nafu.png' width='140px;'>
161
+ </a>
162
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
163
+ </td>
164
164
  </tr>
165
165
  <tr>
166
- <td id='aaron-brager'>
167
- <a href='https://github.com/getaaron'>
168
- <img src='https://github.com/getaaron.png' width='140px;'>
166
+ <td id='łukasz-grabowski'>
167
+ <a href='https://github.com/lucgrabowski'>
168
+ <img src='https://github.com/lucgrabowski.png' width='140px;'>
169
169
  </a>
170
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
170
+ <h4 align='center'>Łukasz Grabowski</h4>
171
171
  </td>
172
172
  <td id='manu-wallner'>
173
173
  <a href='https://github.com/milch'>
@@ -175,31 +175,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
175
175
  </a>
176
176
  <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
177
177
  </td>
178
- <td id='joshua-liebowitz'>
179
- <a href='https://github.com/taquitos'>
180
- <img src='https://github.com/taquitos.png' width='140px;'>
178
+ <td id='matthew-ellis'>
179
+ <a href='https://github.com/matthewellis'>
180
+ <img src='https://github.com/matthewellis.png' width='140px;'>
181
181
  </a>
182
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
182
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
183
183
  </td>
184
- <td id='satoshi-namai'>
185
- <a href='https://github.com/ainame'>
186
- <img src='https://github.com/ainame.png' width='140px;'>
184
+ <td id='manish-rathi'>
185
+ <a href='https://github.com/crazymanish'>
186
+ <img src='https://github.com/crazymanish.png' width='140px;'>
187
187
  </a>
188
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
188
+ <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
189
189
  </td>
190
- <td id='felix-krause'>
191
- <a href='https://github.com/KrauseFx'>
192
- <img src='https://github.com/KrauseFx.png' width='140px;'>
190
+ <td id='kohki-miki'>
191
+ <a href='https://github.com/giginet'>
192
+ <img src='https://github.com/giginet.png' width='140px;'>
193
193
  </a>
194
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
194
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
195
195
  </td>
196
196
  </tr>
197
197
  <tr>
198
- <td id='manish-rathi'>
199
- <a href='https://github.com/crazymanish'>
200
- <img src='https://github.com/crazymanish.png' width='140px;'>
198
+ <td id='felix-krause'>
199
+ <a href='https://github.com/KrauseFx'>
200
+ <img src='https://github.com/KrauseFx.png' width='140px;'>
201
201
  </a>
202
- <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
202
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
203
203
  </td>
204
204
  </table>
205
205
 
@@ -138,26 +138,34 @@ module Cert
138
138
  # All certificates of this type
139
139
  def certificates
140
140
  filter = {
141
- certificateType: certificate_type
141
+ certificateType: certificate_types.join(",")
142
142
  }
143
143
  return Spaceship::ConnectAPI::Certificate.all(filter: filter)
144
144
  end
145
145
 
146
- # The kind of certificate we're interested in
146
+ # The kind of certificate we're interested in (for creating)
147
147
  def certificate_type
148
+ return certificate_types.first
149
+ end
150
+
151
+ # The kind of certificates we're interested in (for listing)
152
+ def certificate_types
148
153
  if Cert.config[:type]
149
154
  case Cert.config[:type].to_sym
150
155
  when :mac_installer_distribution
151
- return Spaceship::ConnectAPI::Certificate::CertificateType::MAC_INSTALLER_DISTRIBUTION
156
+ return [Spaceship::ConnectAPI::Certificate::CertificateType::MAC_INSTALLER_DISTRIBUTION]
152
157
  when :developer_id_application
153
- return Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPER_ID_APPLICATION
158
+ return [
159
+ Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPER_ID_APPLICATION_G2,
160
+ Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPER_ID_APPLICATION
161
+ ]
154
162
  when :developer_id_kext
155
- return Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPER_ID_KEXT
163
+ return [Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPER_ID_KEXT]
156
164
  when :developer_id_installer
157
165
  if !Spaceship::ConnectAPI.token.nil?
158
166
  raise "As of 2021-11-09, the App Store Connect API does not allow accessing DEVELOPER_ID_INSTALLER with the API Key. Please file an issue on GitHub if this has changed and needs to be updated"
159
167
  else
160
- return Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPER_ID_INSTALLER
168
+ return [Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPER_ID_INSTALLER]
161
169
  end
162
170
  else
163
171
  UI.user_error("Unaccepted value for :type - #{Cert.config[:type]}")
@@ -182,7 +190,7 @@ module Cert
182
190
  end
183
191
  end
184
192
 
185
- return cert_type
193
+ return [cert_type]
186
194
  end
187
195
 
188
196
  def create_certificate
@@ -173,6 +173,11 @@ module Deliver
173
173
  description: "Submit the new version for Review after uploading everything",
174
174
  type: Boolean,
175
175
  default_value: false),
176
+ FastlaneCore::ConfigItem.new(key: :verify_only,
177
+ env_name: "DELIVER_VERIFY_ONLY",
178
+ description: "Verifies archive with App Store Connect without uploading",
179
+ type: Boolean,
180
+ default_value: false),
176
181
  FastlaneCore::ConfigItem.new(key: :reject_if_possible,
177
182
  env_name: "DELIVER_REJECT_IF_POSSIBLE",
178
183
  description: "Rejects the previously submitted build if it's in a state where it's possible",
@@ -46,6 +46,12 @@ module Deliver
46
46
  end
47
47
 
48
48
  def run
49
+ if options[:verify_only]
50
+ UI.important("Verify flag is set, only package validation will take place and no submission will be made")
51
+ verify_binary
52
+ return
53
+ end
54
+
49
55
  verify_version if options[:app_version].to_s.length > 0 && !options[:skip_app_version_update]
50
56
 
51
57
  # Rejecting before upload meta
@@ -155,6 +161,45 @@ module Deliver
155
161
  UploadPriceTier.new.upload(options)
156
162
  end
157
163
 
164
+ # Verify the binary with App Store Connect
165
+ def verify_binary
166
+ UI.message("Verifying binary with App Store Connect")
167
+
168
+ verify_ipa = options[:ipa]
169
+ verify_pkg = options[:pkg]
170
+
171
+ # 2020-01-27
172
+ # Only verify platform if if both ipa and pkg exists (for backwards support)
173
+ if verify_ipa && verify_pkg
174
+ verify_ipa = ["ios", "appletvos"].include?(options[:platform])
175
+ verify_pkg = options[:platform] == "osx"
176
+ end
177
+
178
+ if verify_ipa
179
+ package_path = FastlaneCore::IpaUploadPackageBuilder.new.generate(
180
+ app_id: Deliver.cache[:app].id,
181
+ ipa_path: options[:ipa],
182
+ package_path: "/tmp",
183
+ platform: options[:platform]
184
+ )
185
+ elsif verify_pkg
186
+ package_path = FastlaneCore::PkgUploadPackageBuilder.new.generate(
187
+ app_id: Deliver.cache[:app].id,
188
+ pkg_path: options[:pkg],
189
+ package_path: "/tmp",
190
+ platform: options[:platform]
191
+ )
192
+ end
193
+
194
+ transporter = transporter_for_selected_team
195
+ result = transporter.verify(package_path: package_path)
196
+
197
+ unless result
198
+ transporter_errors = transporter.displayable_errors
199
+ UI.user_error!("Error verifying the binary file: \n #{transporter_errors}")
200
+ end
201
+ end
202
+
158
203
  # Upload the binary to App Store Connect
159
204
  def upload_binary
160
205
  UI.message("Uploading binary to App Store Connect")
@@ -25,6 +25,8 @@ module Fastlane
25
25
  cmd << "pr #{pr}" if pr
26
26
 
27
27
  ENV['DANGER_GITHUB_API_TOKEN'] = params[:github_api_token] if params[:github_api_token]
28
+ ENV['DANGER_GITHUB_HOST'] = params[:github_enterprise_host] if params[:github_enterprise_host]
29
+ ENV['DANGER_GITHUB_API_BASE_URL'] = params[:github_enterprise_api_base_url] if params[:github_enterprise_api_base_url]
28
30
 
29
31
  Actions.sh(cmd.join(' '))
30
32
  end
@@ -66,6 +68,18 @@ module Fastlane
66
68
  sensitive: true,
67
69
  code_gen_sensitive: true,
68
70
  optional: true),
71
+ FastlaneCore::ConfigItem.new(key: :github_enterprise_host,
72
+ env_name: "FL_DANGER_GITHUB_ENTERPRISE_HOST",
73
+ description: "GitHub host URL for GitHub Enterprise",
74
+ sensitive: true,
75
+ code_gen_sensitive: true,
76
+ optional: true),
77
+ FastlaneCore::ConfigItem.new(key: :github_enterprise_api_base_url,
78
+ env_name: "FL_DANGER_GITHUB_ENTERPRISE_API_BASE_URL",
79
+ description: "GitHub API base URL for GitHub Enterprise",
80
+ sensitive: true,
81
+ code_gen_sensitive: true,
82
+ optional: true),
69
83
  FastlaneCore::ConfigItem.new(key: :fail_on_errors,
70
84
  env_name: "FL_DANGER_FAIL_ON_ERRORS",
71
85
  description: "Should always fail the build process, defaults to false",
@@ -71,13 +71,7 @@ module Fastlane
71
71
  def self.available_options
72
72
  require 'scan'
73
73
 
74
- FastlaneCore::CommanderGenerator.new.generate(Scan::Options.available_options) + [
75
- FastlaneCore::ConfigItem.new(key: :fail_build,
76
- env_name: "SCAN_FAIL_BUILD",
77
- description: "Should this step stop the build if the tests fail? Set this to false if you're using trainer",
78
- type: Boolean,
79
- default_value: true)
80
- ]
74
+ FastlaneCore::CommanderGenerator.new.generate(Scan::Options.available_options)
81
75
  end
82
76
 
83
77
  def self.output
@@ -12,7 +12,7 @@ module Fastlane
12
12
  setup_output_paths
13
13
  end
14
14
 
15
- setup_keychain
15
+ setup_keychain(params)
16
16
  end
17
17
 
18
18
  def self.should_run?(params)
@@ -23,7 +23,7 @@ module Fastlane
23
23
  params[:provider] || (Helper.is_circle_ci? ? 'circleci' : nil)
24
24
  end
25
25
 
26
- def self.setup_keychain
26
+ def self.setup_keychain(params)
27
27
  unless Helper.mac?
28
28
  UI.message("Skipping Keychain setup on non-macOS CI Agent")
29
29
  return
@@ -43,7 +43,7 @@ module Fastlane
43
43
  name: keychain_name,
44
44
  default_keychain: true,
45
45
  unlock: true,
46
- timeout: 3600,
46
+ timeout: params[:timeout],
47
47
  lock_when_sleeps: true,
48
48
  password: "",
49
49
  add_to_search_list: true
@@ -103,7 +103,12 @@ module Fastlane
103
103
  # Validate both 'travis' and 'circleci' for backwards compatibility, even
104
104
  # though only the latter receives special treatment by this action
105
105
  UI.user_error!("A given CI provider '#{value}' is not supported. Available CI providers: 'travis', 'circleci'") unless ["travis", "circleci"].include?(value)
106
- end)
106
+ end),
107
+ FastlaneCore::ConfigItem.new(key: :timeout,
108
+ env_name: "FL_SETUP_CI_TIMEOUT",
109
+ description: "Set a custom timeout in seconds for keychain. Set `0` if you want to specify 'no time-out'",
110
+ type: Integer,
111
+ default_value: 3600)
107
112
  ]
108
113
  end
109
114
 
@@ -119,6 +124,10 @@ module Fastlane
119
124
  [
120
125
  'setup_ci(
121
126
  provider: "circleci"
127
+ )',
128
+ 'setup_ci(
129
+ provider: "circleci",
130
+ timeout: 0
122
131
  )'
123
132
  ]
124
133
  end
@@ -78,6 +78,7 @@ module Fastlane
78
78
  tool_name = ARGV.first ? ARGV.first.downcase : nil
79
79
 
80
80
  tool_name = process_emojis(tool_name)
81
+ tool_name = map_aliased_tools(tool_name)
81
82
 
82
83
  if tool_name && Fastlane::TOOLS.include?(tool_name.to_sym) && !available_lanes.include?(tool_name.to_sym)
83
84
  # Triggering a specific tool
@@ -125,6 +126,10 @@ module Fastlane
125
126
  FastlaneCore::UpdateChecker.show_update_status('fastlane', Fastlane::VERSION)
126
127
  end
127
128
 
129
+ def map_aliased_tools(tool_name)
130
+ Fastlane::TOOL_ALIASES[tool_name&.to_sym] || tool_name
131
+ end
132
+
128
133
  # Since loading dotenv should respect additional environments passed using
129
134
  # --env, we must extract the arguments out of ARGV and process them before
130
135
  # calling into commander. This is required since the ENV must be configured
@@ -108,7 +108,7 @@ module Fastlane
108
108
  puts(table)
109
109
 
110
110
  fastlane_command = Helper.bundler? ? "bundle exec fastlane" : "fastlane"
111
- i = UI.input("Which number would you like run?")
111
+ i = UI.input("Which number would you like to run?")
112
112
 
113
113
  i = i.to_i - 1
114
114
  if i >= 0 && available[i]
@@ -31,4 +31,20 @@ module Fastlane
31
31
  "Screengrabfile",
32
32
  "Snapshotfile"
33
33
  ]
34
+
35
+ TOOL_ALIASES = {
36
+ "get_certificates": "cert",
37
+ "upload_to_app_store": "deliver",
38
+ "frame_screenshots": "frameit",
39
+ "build_app": "gym",
40
+ "build_ios_app": "gym",
41
+ "build_mac_app": "gym",
42
+ "sync_code_signing": "match",
43
+ "get_push_certificate": "pem",
44
+ "check_app_store_metadata": "precheck",
45
+ "capture_android_screenshots": "screengrab",
46
+ "get_provisioning_profile": "sigh",
47
+ "capture_ios_screenshots": "snapshot",
48
+ "upload_to_play_store": "supply"
49
+ }
34
50
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.205.2'.freeze
2
+ VERSION = '2.206.2'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  MINIMUM_XCODE_RELEASE = "7.0".freeze
5
5
  RUBOCOP_REQUIREMENT = '1.12.1'.freeze
@@ -17,4 +17,4 @@ public class Deliverfile: DeliverfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.205.2
20
+ // Generated with fastlane 2.206.2
@@ -65,6 +65,9 @@ public protocol DeliverfileProtocol: AnyObject {
65
65
  /// Submit the new version for Review after uploading everything
66
66
  var submitForReview: Bool { get }
67
67
 
68
+ /// Verifies archive with App Store Connect without uploading
69
+ var verifyOnly: Bool { get }
70
+
68
71
  /// Rejects the previously submitted build if it's in a state where it's possible
69
72
  var rejectIfPossible: Bool { get }
70
73
 
@@ -214,6 +217,7 @@ public extension DeliverfileProtocol {
214
217
  var overwriteScreenshots: Bool { return false }
215
218
  var syncScreenshots: Bool { return false }
216
219
  var submitForReview: Bool { return false }
220
+ var verifyOnly: Bool { return false }
217
221
  var rejectIfPossible: Bool { return false }
218
222
  var automaticRelease: Bool? { return nil }
219
223
  var autoReleaseDate: Int? { return nil }
@@ -260,4 +264,4 @@ public extension DeliverfileProtocol {
260
264
 
261
265
  // Please don't remove the lines below
262
266
  // They are used to detect outdated files
263
- // FastlaneRunnerAPIVersion [0.9.102]
267
+ // FastlaneRunnerAPIVersion [0.9.105]