fastlane 2.205.1 → 2.206.1

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 (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +88 -88
  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/{frameit/lib/frameit/.offsets.rb.swp → 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. metadata +23 -28
  46. data/frameit/lib/frameit/.device.rb.swp +0 -0
  47. data/frameit/lib/frameit/.device_types.rb.swp +0 -0
  48. data/frameit/lib/frameit/.editor.rb.swp +0 -0
  49. data/frameit/lib/frameit/.runner.rb.swp +0 -0
  50. data/frameit/lib/frameit/.screenshot.rb.swp +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 994da9828fe4d44c29cac93ca6e884180b10287e3d718daa4181027cab944092
4
- data.tar.gz: 0d72f9db1cc73bcc469975734793e6a85357b88c9ad12bb8e735022145312bb3
3
+ metadata.gz: d672d93684e080402a5134a7119d8919c103ae31b4225039e8c51eb82f1ddd3c
4
+ data.tar.gz: '08fe0b17e3e93c07e62e456a5eb7964d29a6d12a1782c0961a275d3a9090ed40'
5
5
  SHA512:
6
- metadata.gz: 398db44834ce32b96c719024e03c91ea820333bf101b5e1188e778b2c8acd34118b4642910f8cf53b75c6495ae78a523b582e6ca1369be6c55441444dce246b2
7
- data.tar.gz: 6928c188cfd852191e997cc7a1991ae7b60ea2fa9a0bfcba886c7b7c0efc9e5e33893604c127c0f0de0a18ea1104ce1f53133c9087723973d749fa852d6fccae
6
+ metadata.gz: a784a27e27f1edae3c450828f938c9a673db46ad7755eb45878807aac3a4b422d32b48c3ff9ff438e5ee58214d28c217371f51f95cc1c359c83be7104c096c30
7
+ data.tar.gz: ad732679e342ee88fb948f6d3a339c60301dfad48952953d211fd335046e573661305f25e7797131566f3bf10965745c625c98cf91fd9fd2da72910c12433c5b
data/README.md CHANGED
@@ -41,17 +41,23 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
41
41
  </a>
42
42
  <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
43
43
  </td>
44
- <td id='jimmy-dee'>
45
- <a href='https://github.com/jdee'>
46
- <img src='https://github.com/jdee.png' width='140px;'>
44
+ <td id='jan-piotrowski'>
45
+ <a href='https://github.com/janpio'>
46
+ <img src='https://github.com/janpio.png' width='140px;'>
47
47
  </a>
48
- <h4 align='center'>Jimmy Dee</h4>
48
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
49
49
  </td>
50
- <td id='manu-wallner'>
51
- <a href='https://github.com/milch'>
52
- <img src='https://github.com/milch.png' width='140px;'>
50
+ <td id='maksym-grebenets'>
51
+ <a href='https://github.com/mgrebenets'>
52
+ <img src='https://github.com/mgrebenets.png' width='140px;'>
53
53
  </a>
54
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
54
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
55
+ </td>
56
+ <td id='joshua-liebowitz'>
57
+ <a href='https://github.com/taquitos'>
58
+ <img src='https://github.com/taquitos.png' width='140px;'>
59
+ </a>
60
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
55
61
  </td>
56
62
  <td id='danielle-tomlinson'>
57
63
  <a href='https://github.com/endocrimes'>
@@ -59,121 +65,83 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
59
65
  </a>
60
66
  <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
61
67
  </td>
62
- <td id='satoshi-namai'>
63
- <a href='https://github.com/ainame'>
64
- <img src='https://github.com/ainame.png' width='140px;'>
65
- </a>
66
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
67
- </td>
68
68
  </tr>
69
69
  <tr>
70
- <td id='kohki-miki'>
71
- <a href='https://github.com/giginet'>
72
- <img src='https://github.com/giginet.png' width='140px;'>
73
- </a>
74
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
75
- </td>
76
- <td id='josh-holtz'>
77
- <a href='https://github.com/joshdholtz'>
78
- <img src='https://github.com/joshdholtz.png' width='140px;'>
79
- </a>
80
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
81
- </td>
82
- <td id='jan-piotrowski'>
83
- <a href='https://github.com/janpio'>
84
- <img src='https://github.com/janpio.png' width='140px;'>
70
+ <td id='manish-rathi'>
71
+ <a href='https://github.com/crazymanish'>
72
+ <img src='https://github.com/crazymanish.png' width='140px;'>
85
73
  </a>
86
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
74
+ <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
87
75
  </td>
88
- <td id='łukasz-grabowski'>
89
- <a href='https://github.com/lucgrabowski'>
90
- <img src='https://github.com/lucgrabowski.png' width='140px;'>
76
+ <td id='iulian-onofrei'>
77
+ <a href='https://github.com/revolter'>
78
+ <img src='https://github.com/revolter.png' width='140px;'>
91
79
  </a>
92
- <h4 align='center'>Łukasz Grabowski</h4>
80
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
93
81
  </td>
94
- <td id='matthew-ellis'>
95
- <a href='https://github.com/matthewellis'>
96
- <img src='https://github.com/matthewellis.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;'>
97
85
  </a>
98
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
86
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
99
87
  </td>
100
- </tr>
101
- <tr>
102
88
  <td id='aaron-brager'>
103
89
  <a href='https://github.com/getaaron'>
104
90
  <img src='https://github.com/getaaron.png' width='140px;'>
105
91
  </a>
106
92
  <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
107
93
  </td>
108
- <td id='manish-rathi'>
109
- <a href='https://github.com/crazymanish'>
110
- <img src='https://github.com/crazymanish.png' width='140px;'>
111
- </a>
112
- <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
113
- </td>
114
94
  <td id='olivier-halligon'>
115
95
  <a href='https://github.com/AliSoftware'>
116
96
  <img src='https://github.com/AliSoftware.png' width='140px;'>
117
97
  </a>
118
98
  <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
119
99
  </td>
120
- <td id='joshua-liebowitz'>
121
- <a href='https://github.com/taquitos'>
122
- <img src='https://github.com/taquitos.png' width='140px;'>
123
- </a>
124
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
125
- </td>
100
+ </tr>
101
+ <tr>
126
102
  <td id='andrew-mcburney'>
127
103
  <a href='https://github.com/armcburney'>
128
104
  <img src='https://github.com/armcburney.png' width='140px;'>
129
105
  </a>
130
106
  <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
131
107
  </td>
132
- </tr>
133
- <tr>
134
- <td id='felix-krause'>
135
- <a href='https://github.com/KrauseFx'>
136
- <img src='https://github.com/KrauseFx.png' width='140px;'>
137
- </a>
138
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
139
- </td>
140
- <td id='max-ott'>
141
- <a href='https://github.com/max-ott'>
142
- <img src='https://github.com/max-ott.png' width='140px;'>
108
+ <td id='manu-wallner'>
109
+ <a href='https://github.com/milch'>
110
+ <img src='https://github.com/milch.png' width='140px;'>
143
111
  </a>
144
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
112
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
145
113
  </td>
146
- <td id='helmut-januschka'>
147
- <a href='https://github.com/hjanuschka'>
148
- <img src='https://github.com/hjanuschka.png' width='140px;'>
114
+ <td id='stefan-natchev'>
115
+ <a href='https://github.com/snatchev'>
116
+ <img src='https://github.com/snatchev.png' width='140px;'>
149
117
  </a>
150
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
118
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
151
119
  </td>
152
- <td id='fumiya-nakamura'>
153
- <a href='https://github.com/nafu'>
154
- <img src='https://github.com/nafu.png' width='140px;'>
120
+ <td id='łukasz-grabowski'>
121
+ <a href='https://github.com/lucgrabowski'>
122
+ <img src='https://github.com/lucgrabowski.png' width='140px;'>
155
123
  </a>
156
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
124
+ <h4 align='center'>Łukasz Grabowski</h4>
157
125
  </td>
158
- <td id='iulian-onofrei'>
159
- <a href='https://github.com/revolter'>
160
- <img src='https://github.com/revolter.png' width='140px;'>
126
+ <td id='satoshi-namai'>
127
+ <a href='https://github.com/ainame'>
128
+ <img src='https://github.com/ainame.png' width='140px;'>
161
129
  </a>
162
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
130
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
163
131
  </td>
164
132
  </tr>
165
133
  <tr>
166
- <td id='stefan-natchev'>
167
- <a href='https://github.com/snatchev'>
168
- <img src='https://github.com/snatchev.png' width='140px;'>
134
+ <td id='josh-holtz'>
135
+ <a href='https://github.com/joshdholtz'>
136
+ <img src='https://github.com/joshdholtz.png' width='140px;'>
169
137
  </a>
170
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
138
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
171
139
  </td>
172
- <td id='maksym-grebenets'>
173
- <a href='https://github.com/mgrebenets'>
174
- <img src='https://github.com/mgrebenets.png' width='140px;'>
140
+ <td id='kohki-miki'>
141
+ <a href='https://github.com/giginet'>
142
+ <img src='https://github.com/giginet.png' width='140px;'>
175
143
  </a>
176
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
144
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
177
145
  </td>
178
146
  <td id='roger-oba'>
179
147
  <a href='https://github.com/rogerluan'>
@@ -187,19 +155,51 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
187
155
  </a>
188
156
  <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
189
157
  </td>
158
+ <td id='max-ott'>
159
+ <a href='https://github.com/max-ott'>
160
+ <img src='https://github.com/max-ott.png' width='140px;'>
161
+ </a>
162
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
163
+ </td>
164
+ </tr>
165
+ <tr>
190
166
  <td id='jorge-revuelta-h'>
191
167
  <a href='https://github.com/minuscorp'>
192
168
  <img src='https://github.com/minuscorp.png' width='140px;'>
193
169
  </a>
194
170
  <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
195
171
  </td>
172
+ <td id='helmut-januschka'>
173
+ <a href='https://github.com/hjanuschka'>
174
+ <img src='https://github.com/hjanuschka.png' width='140px;'>
175
+ </a>
176
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
177
+ </td>
178
+ <td id='fumiya-nakamura'>
179
+ <a href='https://github.com/nafu'>
180
+ <img src='https://github.com/nafu.png' width='140px;'>
181
+ </a>
182
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
183
+ </td>
184
+ <td id='matthew-ellis'>
185
+ <a href='https://github.com/matthewellis'>
186
+ <img src='https://github.com/matthewellis.png' width='140px;'>
187
+ </a>
188
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
189
+ </td>
190
+ <td id='jimmy-dee'>
191
+ <a href='https://github.com/jdee'>
192
+ <img src='https://github.com/jdee.png' width='140px;'>
193
+ </a>
194
+ <h4 align='center'>Jimmy Dee</h4>
195
+ </td>
196
196
  </tr>
197
197
  <tr>
198
- <td id='luka-mirosevic'>
199
- <a href='https://github.com/lmirosevic'>
200
- <img src='https://github.com/lmirosevic.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/lmirosevic'>Luka Mirosevic</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
@@ -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.1'.freeze
2
+ VERSION = '2.206.1'.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.1
20
+ // Generated with fastlane 2.206.1
@@ -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.101]
267
+ // FastlaneRunnerAPIVersion [0.9.104]