fastlane 2.205.0 → 2.206.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 (49) 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 +47 -2
  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/actions/update_project_provisioning.rb +9 -0
  11. data/fastlane/lib/fastlane/cli_tools_distributor.rb +20 -0
  12. data/fastlane/lib/fastlane/version.rb +1 -1
  13. data/fastlane/swift/Deliverfile.swift +1 -1
  14. data/fastlane/swift/DeliverfileProtocol.swift +5 -1
  15. data/fastlane/swift/Fastlane.swift +39 -3
  16. data/fastlane/swift/Gymfile.swift +1 -1
  17. data/fastlane/swift/GymfileProtocol.swift +1 -1
  18. data/fastlane/swift/Matchfile.swift +1 -1
  19. data/fastlane/swift/MatchfileProtocol.swift +5 -1
  20. data/fastlane/swift/Precheckfile.swift +1 -1
  21. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  22. data/fastlane/swift/Scanfile.swift +1 -1
  23. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  24. data/fastlane/swift/Screengrabfile.swift +1 -1
  25. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  26. data/fastlane/swift/Snapshotfile.swift +1 -1
  27. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  28. data/fastlane/swift/formatting/Brewfile.lock.json +13 -13
  29. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +90 -0
  30. data/frameit/lib/frameit/device_types.rb +7 -0
  31. data/match/lib/match/importer.rb +3 -1
  32. data/match/lib/match/options.rb +5 -0
  33. data/match/lib/match/runner.rb +9 -3
  34. data/match/lib/match/storage/google_cloud_storage.rb +7 -6
  35. data/scan/lib/scan/options.rb +6 -1
  36. data/scan/lib/scan/runner.rb +10 -2
  37. data/sigh/lib/sigh/runner.rb +2 -1
  38. data/spaceship/lib/spaceship/connect_api/api_client.rb +10 -5
  39. data/spaceship/lib/spaceship/connect_api/models/app.rb +1 -2
  40. data/spaceship/lib/spaceship/connect_api/models/build_delivery.rb +2 -1
  41. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +1 -0
  42. data/spaceship/lib/spaceship/connect_api/models/user.rb +5 -0
  43. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +24 -2
  44. data/spaceship/lib/spaceship/connect_api/token.rb +5 -2
  45. data/spaceship/lib/spaceship/tunes/tunes_client.rb +7 -7
  46. data/trainer/lib/trainer/test_parser.rb +1 -1
  47. metadata +22 -23
  48. data/spaceship/lib/spaceship/.client.rb.swp +0 -0
  49. data/spaceship/lib/spaceship/tunes/.tunes_client.rb.swp +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 05270744fe6e63c79322a0e642c6293c463bbd6365042b949537a477c1e3d3c4
4
- data.tar.gz: b2bb49aeec0d22405b99e2f2cc6e2fb946377960eb7e160d11f8f61d6744d32d
3
+ metadata.gz: 317829e959e1ddefb2bf8509aab4759908053aacb4ca6ada69b76fd1c889d7ab
4
+ data.tar.gz: da4f61c5a484553bcc8a6adaf38b32e126afbbdcf67a34aba01b4cc1890eb31d
5
5
  SHA512:
6
- metadata.gz: aa3d5be55d5b42f52dfbd77450549aec0691c57dfcdfb95109be75338f5d7a461ea0b83c015cddb65c39c43324ef43172d6b7a2a3d51033b6d99d63c5edb2d66
7
- data.tar.gz: caaee34991c9a6ff6dca57960d3eab72135f3ba80ce5e29c15b1da530beb59fd8134d03b9831a463b9fc785693a545092436de2fc63bffaeeeb34eaef9f3e509
6
+ metadata.gz: 8ae03a2f09a22603d6920abd1c129f5eb34cceebe1cfd633d25234140213a109bd05affb55a48b4e02e82697de95000b83960d77bc81fec96c3304871a666e83
7
+ data.tar.gz: 135ff6384e23c9f56a2cc2795cecd720825445316e2da518a23d94899859b642970a34cac5ec74aba7cef06ada8ab86f25f311db614d379062d26ed100e27b09
data/README.md CHANGED
@@ -35,139 +35,119 @@ 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='fumiya-nakamura'>
39
- <a href='https://github.com/nafu'>
40
- <img src='https://github.com/nafu.png' width='140px;'>
41
- </a>
42
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
43
- </td>
44
- <td id='luka-mirosevic'>
45
- <a href='https://github.com/lmirosevic'>
46
- <img src='https://github.com/lmirosevic.png' width='140px;'>
47
- </a>
48
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
49
- </td>
50
- <td id='felix-krause'>
51
- <a href='https://github.com/KrauseFx'>
52
- <img src='https://github.com/KrauseFx.png' width='140px;'>
53
- </a>
54
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
55
- </td>
56
- <td id='matthew-ellis'>
57
- <a href='https://github.com/matthewellis'>
58
- <img src='https://github.com/matthewellis.png' width='140px;'>
59
- </a>
60
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
61
- </td>
62
- <td id='satoshi-namai'>
63
- <a href='https://github.com/ainame'>
64
- <img src='https://github.com/ainame.png' width='140px;'>
38
+ <td id='josh-holtz'>
39
+ <a href='https://github.com/joshdholtz'>
40
+ <img src='https://github.com/joshdholtz.png' width='140px;'>
65
41
  </a>
66
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
42
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
67
43
  </td>
68
- </tr>
69
- <tr>
70
44
  <td id='maksym-grebenets'>
71
45
  <a href='https://github.com/mgrebenets'>
72
46
  <img src='https://github.com/mgrebenets.png' width='140px;'>
73
47
  </a>
74
48
  <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
75
49
  </td>
76
- <td id='roger-oba'>
77
- <a href='https://github.com/rogerluan'>
78
- <img src='https://github.com/rogerluan.png' width='140px;'>
79
- </a>
80
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
81
- </td>
82
- <td id='olivier-halligon'>
83
- <a href='https://github.com/AliSoftware'>
84
- <img src='https://github.com/AliSoftware.png' width='140px;'>
85
- </a>
86
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
87
- </td>
88
50
  <td id='jorge-revuelta-h'>
89
51
  <a href='https://github.com/minuscorp'>
90
52
  <img src='https://github.com/minuscorp.png' width='140px;'>
91
53
  </a>
92
54
  <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
93
55
  </td>
94
- <td id='danielle-tomlinson'>
95
- <a href='https://github.com/endocrimes'>
96
- <img src='https://github.com/endocrimes.png' width='140px;'>
56
+ <td id='stefan-natchev'>
57
+ <a href='https://github.com/snatchev'>
58
+ <img src='https://github.com/snatchev.png' width='140px;'>
97
59
  </a>
98
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
60
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
99
61
  </td>
100
- </tr>
101
- <tr>
102
62
  <td id='manish-rathi'>
103
63
  <a href='https://github.com/crazymanish'>
104
64
  <img src='https://github.com/crazymanish.png' width='140px;'>
105
65
  </a>
106
66
  <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
107
67
  </td>
108
- <td id='josh-holtz'>
109
- <a href='https://github.com/joshdholtz'>
110
- <img src='https://github.com/joshdholtz.png' width='140px;'>
68
+ </tr>
69
+ <tr>
70
+ <td id='joshua-liebowitz'>
71
+ <a href='https://github.com/taquitos'>
72
+ <img src='https://github.com/taquitos.png' width='140px;'>
111
73
  </a>
112
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
74
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
113
75
  </td>
114
- <td id='jan-piotrowski'>
115
- <a href='https://github.com/janpio'>
116
- <img src='https://github.com/janpio.png' width='140px;'>
76
+ <td id='manu-wallner'>
77
+ <a href='https://github.com/milch'>
78
+ <img src='https://github.com/milch.png' width='140px;'>
117
79
  </a>
118
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
80
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
119
81
  </td>
120
- <td id='helmut-januschka'>
121
- <a href='https://github.com/hjanuschka'>
122
- <img src='https://github.com/hjanuschka.png' width='140px;'>
82
+ <td id='daniel-jankowski'>
83
+ <a href='https://github.com/mollyIV'>
84
+ <img src='https://github.com/mollyIV.png' width='140px;'>
123
85
  </a>
124
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
86
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
125
87
  </td>
126
- <td id='kohki-miki'>
127
- <a href='https://github.com/giginet'>
128
- <img src='https://github.com/giginet.png' width='140px;'>
88
+ <td id='andrew-mcburney'>
89
+ <a href='https://github.com/armcburney'>
90
+ <img src='https://github.com/armcburney.png' width='140px;'>
129
91
  </a>
130
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
92
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
93
+ </td>
94
+ <td id='jan-piotrowski'>
95
+ <a href='https://github.com/janpio'>
96
+ <img src='https://github.com/janpio.png' width='140px;'>
97
+ </a>
98
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
131
99
  </td>
132
100
  </tr>
133
101
  <tr>
134
- <td id='max-ott'>
135
- <a href='https://github.com/max-ott'>
136
- <img src='https://github.com/max-ott.png' width='140px;'>
102
+ <td id='olivier-halligon'>
103
+ <a href='https://github.com/AliSoftware'>
104
+ <img src='https://github.com/AliSoftware.png' width='140px;'>
137
105
  </a>
138
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
106
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
139
107
  </td>
140
- <td id='jimmy-dee'>
141
- <a href='https://github.com/jdee'>
142
- <img src='https://github.com/jdee.png' width='140px;'>
108
+ <td id='satoshi-namai'>
109
+ <a href='https://github.com/ainame'>
110
+ <img src='https://github.com/ainame.png' width='140px;'>
143
111
  </a>
144
- <h4 align='center'>Jimmy Dee</h4>
112
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
145
113
  </td>
146
- <td id='stefan-natchev'>
147
- <a href='https://github.com/snatchev'>
148
- <img src='https://github.com/snatchev.png' width='140px;'>
114
+ <td id='luka-mirosevic'>
115
+ <a href='https://github.com/lmirosevic'>
116
+ <img src='https://github.com/lmirosevic.png' width='140px;'>
149
117
  </a>
150
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
118
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
151
119
  </td>
152
- <td id='daniel-jankowski'>
153
- <a href='https://github.com/mollyIV'>
154
- <img src='https://github.com/mollyIV.png' width='140px;'>
120
+ <td id='fumiya-nakamura'>
121
+ <a href='https://github.com/nafu'>
122
+ <img src='https://github.com/nafu.png' width='140px;'>
155
123
  </a>
156
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
124
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
157
125
  </td>
158
- <td id='andrew-mcburney'>
159
- <a href='https://github.com/armcburney'>
160
- <img src='https://github.com/armcburney.png' width='140px;'>
126
+ <td id='matthew-ellis'>
127
+ <a href='https://github.com/matthewellis'>
128
+ <img src='https://github.com/matthewellis.png' width='140px;'>
161
129
  </a>
162
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
130
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
163
131
  </td>
164
132
  </tr>
165
133
  <tr>
166
- <td id='aaron-brager'>
167
- <a href='https://github.com/getaaron'>
168
- <img src='https://github.com/getaaron.png' width='140px;'>
134
+ <td id='jimmy-dee'>
135
+ <a href='https://github.com/jdee'>
136
+ <img src='https://github.com/jdee.png' width='140px;'>
169
137
  </a>
170
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
138
+ <h4 align='center'>Jimmy Dee</h4>
139
+ </td>
140
+ <td id='roger-oba'>
141
+ <a href='https://github.com/rogerluan'>
142
+ <img src='https://github.com/rogerluan.png' width='140px;'>
143
+ </a>
144
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
145
+ </td>
146
+ <td id='helmut-januschka'>
147
+ <a href='https://github.com/hjanuschka'>
148
+ <img src='https://github.com/hjanuschka.png' width='140px;'>
149
+ </a>
150
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
171
151
  </td>
172
152
  <td id='jérôme-lacoste'>
173
153
  <a href='https://github.com/lacostej'>
@@ -175,31 +155,51 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
175
155
  </a>
176
156
  <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
177
157
  </td>
178
- <td id='joshua-liebowitz'>
179
- <a href='https://github.com/taquitos'>
180
- <img src='https://github.com/taquitos.png' width='140px;'>
158
+ <td id='max-ott'>
159
+ <a href='https://github.com/max-ott'>
160
+ <img src='https://github.com/max-ott.png' width='140px;'>
181
161
  </a>
182
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
162
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
183
163
  </td>
164
+ </tr>
165
+ <tr>
184
166
  <td id='łukasz-grabowski'>
185
167
  <a href='https://github.com/lucgrabowski'>
186
168
  <img src='https://github.com/lucgrabowski.png' width='140px;'>
187
169
  </a>
188
170
  <h4 align='center'>Łukasz Grabowski</h4>
189
171
  </td>
172
+ <td id='aaron-brager'>
173
+ <a href='https://github.com/getaaron'>
174
+ <img src='https://github.com/getaaron.png' width='140px;'>
175
+ </a>
176
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
177
+ </td>
190
178
  <td id='iulian-onofrei'>
191
179
  <a href='https://github.com/revolter'>
192
180
  <img src='https://github.com/revolter.png' width='140px;'>
193
181
  </a>
194
182
  <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
195
183
  </td>
184
+ <td id='felix-krause'>
185
+ <a href='https://github.com/KrauseFx'>
186
+ <img src='https://github.com/KrauseFx.png' width='140px;'>
187
+ </a>
188
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
189
+ </td>
190
+ <td id='danielle-tomlinson'>
191
+ <a href='https://github.com/endocrimes'>
192
+ <img src='https://github.com/endocrimes.png' width='140px;'>
193
+ </a>
194
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
195
+ </td>
196
196
  </tr>
197
197
  <tr>
198
- <td id='manu-wallner'>
199
- <a href='https://github.com/milch'>
200
- <img src='https://github.com/milch.png' width='140px;'>
198
+ <td id='kohki-miki'>
199
+ <a href='https://github.com/giginet'>
200
+ <img src='https://github.com/giginet.png' width='140px;'>
201
201
  </a>
202
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
202
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</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")
@@ -243,8 +288,8 @@ module Deliver
243
288
  return generic_transporter unless options[:itc_provider].nil? && tunes_client.teams.count > 1
244
289
 
245
290
  begin
246
- team = tunes_client.teams.find { |t| t['contentProvider']['contentProviderId'].to_s == tunes_client.team_id }
247
- name = team['contentProvider']['name']
291
+ team = tunes_client.teams.find { |t| t['providerId'].to_s == tunes_client.team_id }
292
+ name = team['name']
248
293
  provider_id = generic_transporter.provider_ids[name]
249
294
  UI.verbose("Inferred provider id #{provider_id} for team #{name}.")
250
295
  return FastlaneCore::ItunesTransporter.new(options[:username], nil, false, provider_id)
@@ -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
@@ -34,7 +34,9 @@ module Fastlane
34
34
  UI.user_error!("Could not find valid certificate at '#{params[:certificate]}'") unless File.size(params[:certificate]) > 0
35
35
  cert = OpenSSL::X509::Certificate.new(File.read(params[:certificate]))
36
36
  store.add_cert(cert)
37
+
37
38
  p7.verify([cert], store)
39
+ check_verify!(p7)
38
40
  data = Plist.parse_xml(p7.data)
39
41
 
40
42
  target_filter = params[:target_filter] || params[:build_configuration_filter]
@@ -81,6 +83,13 @@ module Fastlane
81
83
  UI.success("Successfully updated project settings in '#{folder}'")
82
84
  end
83
85
 
86
+ def self.check_verify!(p7)
87
+ failed_to_verify = (p7.data.nil? || p7.data == "") && !(p7.error_string || "").empty?
88
+ if failed_to_verify
89
+ UI.crash!("Profile could not be verified with error: '#{p7.error_string}'. Try regenerating provisioning profile.")
90
+ end
91
+ end
92
+
84
93
  def self.description
85
94
  "Update projects code signing settings from your provisioning profile"
86
95
  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,25 @@ 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
+ map = {
131
+ "get_certificates": "cert",
132
+ "upload_to_app_store": "deliver",
133
+ "frame_screenshots": "frameit",
134
+ "build_app": "gym",
135
+ "build_ios_app": "gym",
136
+ "build_mac_app": "gym",
137
+ "sync_code_signing": "match",
138
+ "get_push_certificate": "pem",
139
+ "check_app_store_metadata": "precheck",
140
+ "capture_android_screenshots": "screengrab",
141
+ "get_provisioning_profile": "sigh",
142
+ "capture_ios_screenshots": "snapshot",
143
+ "upload_to_play_store": "supply"
144
+ }
145
+ return map[tool_name.to_sym] || tool_name
146
+ end
147
+
128
148
  # Since loading dotenv should respect additional environments passed using
129
149
  # --env, we must extract the arguments out of ARGV and process them before
130
150
  # calling into commander. This is required since the ENV must be configured
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.205.0'.freeze
2
+ VERSION = '2.206.0'.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.0
20
+ // Generated with fastlane 2.206.0
@@ -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.100]
267
+ // FastlaneRunnerAPIVersion [0.9.103]