fastlane 2.109.1 → 2.110.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +66 -66
  3. data/deliver/lib/deliver/.options.rb.swp +0 -0
  4. data/fastlane/lib/fastlane/actions/download.rb +1 -0
  5. data/fastlane/lib/fastlane/actions/install_on_device.rb +2 -2
  6. data/fastlane/lib/fastlane/actions/resign.rb +5 -17
  7. data/fastlane/lib/fastlane/helper/adb_helper.rb +1 -1
  8. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +3 -3
  9. data/fastlane/lib/fastlane/version.rb +1 -1
  10. data/fastlane/swift/Deliverfile.swift +1 -1
  11. data/fastlane/swift/Fastlane.swift +73 -65
  12. data/fastlane/swift/Gymfile.swift +1 -1
  13. data/fastlane/swift/Matchfile.swift +1 -1
  14. data/fastlane/swift/MatchfileProtocol.swift +5 -1
  15. data/fastlane/swift/Precheckfile.swift +1 -1
  16. data/fastlane/swift/Scanfile.swift +1 -1
  17. data/fastlane/swift/ScanfileProtocol.swift +29 -29
  18. data/fastlane/swift/Screengrabfile.swift +1 -1
  19. data/fastlane/swift/Snapshotfile.swift +1 -1
  20. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +18 -16
  21. data/frameit/lib/frameit/options.rb +1 -1
  22. data/match/lib/match.rb +1 -0
  23. data/match/lib/match/change_password.rb +7 -0
  24. data/match/lib/match/commands_generator.rb +15 -2
  25. data/match/lib/match/encryption.rb +3 -0
  26. data/match/lib/match/encryption/openssl.rb +2 -2
  27. data/match/lib/match/migrate.rb +97 -0
  28. data/match/lib/match/module.rb +1 -1
  29. data/match/lib/match/nuke.rb +22 -6
  30. data/match/lib/match/options.rb +19 -1
  31. data/match/lib/match/runner.rb +58 -15
  32. data/match/lib/match/spaceship_ensure.rb +6 -1
  33. data/match/lib/match/storage.rb +4 -0
  34. data/match/lib/match/storage/git_storage.rb +1 -10
  35. data/match/lib/match/storage/google_cloud_storage.rb +227 -0
  36. data/match/lib/match/storage/interface.rb +9 -3
  37. data/scan/lib/scan/options.rb +105 -86
  38. data/spaceship/README.md +20 -42
  39. metadata +38 -17
  40. data/fastlane_core/lib/fastlane_core/configuration/.config_item.rb.swp +0 -0
  41. data/pilot/lib/pilot/.options.rb.swp +0 -0
@@ -4,7 +4,6 @@ module Match
4
4
  module Storage
5
5
  class Interface
6
6
  MATCH_VERSION_FILE_NAME = "match_version.txt"
7
-
8
7
  # The working directory in which we download all the profiles
9
8
  # and decrypt/encrypt them
10
9
  attr_accessor :working_directory
@@ -41,7 +40,11 @@ module Match
41
40
  # that should be committed to the storage provider
42
41
  # @parameter custom_message: [String] Custom change message
43
42
  # that's optional, is used for commit title
44
- def save_changes!(files_to_commit: [], files_to_delete: [], custom_message: nil)
43
+ def save_changes!(files_to_commit: nil, files_to_delete: nil, custom_message: nil)
44
+ # Custom init to `[]` in case `nil` is passed
45
+ files_to_commit ||= []
46
+ files_to_delete ||= []
47
+
45
48
  Dir.chdir(File.expand_path(self.working_directory)) do
46
49
  if files_to_commit.count > 0 # everything that isn't `match nuke`
47
50
  UI.user_error!("You can't provide both `files_to_delete` and `files_to_commit` right now") if files_to_delete.count > 0
@@ -81,7 +84,10 @@ module Match
81
84
 
82
85
  # Call this method to reset any changes made locally to the files
83
86
  def clear_changes
84
- not_implemented(__method__)
87
+ return unless @working_directory
88
+
89
+ FileUtils.rm_rf(self.working_directory)
90
+ self.working_directory = nil
85
91
  end
86
92
  end
87
93
  end
@@ -13,6 +13,7 @@ module Scan
13
13
  containing = FastlaneCore::Helper.fastlane_enabled_folder_path
14
14
 
15
15
  [
16
+ # app to test
16
17
  FastlaneCore::ConfigItem.new(key: :workspace,
17
18
  short_option: "-w",
18
19
  env_name: "SCAN_WORKSPACE",
@@ -35,6 +36,13 @@ module Scan
35
36
  UI.user_error!("Project file invalid") unless File.directory?(v)
36
37
  UI.user_error!("Project file is not a project file, must end with .xcodeproj") unless v.include?(".xcodeproj")
37
38
  end),
39
+ FastlaneCore::ConfigItem.new(key: :scheme,
40
+ short_option: "-s",
41
+ optional: true,
42
+ env_name: "SCAN_SCHEME",
43
+ description: "The project's scheme. Make sure it's marked as `Shared`"),
44
+
45
+ # device (simulator) to use for testing
38
46
  FastlaneCore::ConfigItem.new(key: :device,
39
47
  short_option: "-a",
40
48
  optional: true,
@@ -45,12 +53,6 @@ module Scan
45
53
  conflict_block: proc do |value|
46
54
  UI.user_error!("You can't use 'device' and 'devices' options in one run")
47
55
  end),
48
- FastlaneCore::ConfigItem.new(key: :toolchain,
49
- env_name: "SCAN_TOOLCHAIN",
50
- conflicting_options: [:xctestrun],
51
- description: "The toolchain that should be used for building the application (e.g. com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a)",
52
- optional: true,
53
- is_string: false),
54
56
  FastlaneCore::ConfigItem.new(key: :devices,
55
57
  optional: true,
56
58
  is_string: false,
@@ -66,11 +68,53 @@ module Scan
66
68
  default_value: false,
67
69
  type: Boolean,
68
70
  optional: true),
69
- FastlaneCore::ConfigItem.new(key: :scheme,
70
- short_option: "-s",
71
+
72
+ # reinstall app
73
+ FastlaneCore::ConfigItem.new(key: :reinstall_app,
74
+ env_name: 'SCAN_REINSTALL_APP',
75
+ description: "Enabling this option will automatically uninstall the application before running it",
76
+ default_value: false,
77
+ is_string: false),
78
+ FastlaneCore::ConfigItem.new(key: :app_identifier,
79
+ env_name: 'SCAN_APP_IDENTIFIER',
71
80
  optional: true,
72
- env_name: "SCAN_SCHEME",
73
- description: "The project's scheme. Make sure it's marked as `Shared`"),
81
+ description: "The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)",
82
+ code_gen_sensitive: true,
83
+ default_value: CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier),
84
+ default_value_dynamic: true),
85
+
86
+ # tests to run
87
+ FastlaneCore::ConfigItem.new(key: :only_testing,
88
+ env_name: "SCAN_ONLY_TESTING",
89
+ description: "Array of strings matching Test Bundle/Test Suite/Test Cases to run",
90
+ optional: true,
91
+ is_string: false,
92
+ verify_block: proc do |value|
93
+ verify_type('only_testing', [Array, String], value)
94
+ end),
95
+ FastlaneCore::ConfigItem.new(key: :skip_testing,
96
+ env_name: "SCAN_SKIP_TESTING",
97
+ description: "Array of strings matching Test Bundle/Test Suite/Test Cases to skip",
98
+ optional: true,
99
+ is_string: false,
100
+ verify_block: proc do |value|
101
+ verify_type('skip_testing', [Array, String], value)
102
+ end),
103
+
104
+ # other test options
105
+ FastlaneCore::ConfigItem.new(key: :xctestrun,
106
+ short_option: "-X",
107
+ env_name: "SCAN_XCTESTRUN",
108
+ description: "Run tests using the provided `.xctestrun` file",
109
+ conflicting_options: [:build_for_testing],
110
+ is_string: true,
111
+ optional: true),
112
+ FastlaneCore::ConfigItem.new(key: :toolchain,
113
+ env_name: "SCAN_TOOLCHAIN",
114
+ conflicting_options: [:xctestrun],
115
+ description: "The toolchain that should be used for building the application (e.g. `com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a`)",
116
+ optional: true,
117
+ is_string: false),
74
118
  FastlaneCore::ConfigItem.new(key: :clean,
75
119
  short_option: "-c",
76
120
  env_name: "SCAN_CLEAN",
@@ -100,12 +144,13 @@ module Scan
100
144
  conflict_block: proc do |value|
101
145
  UI.user_error!("You can't use 'thread_sanitizer' and 'address_sanitizer' options in one run")
102
146
  end),
103
- FastlaneCore::ConfigItem.new(key: :skip_build,
104
- description: "Should debug build be skipped before test build?",
105
- short_option: "-r",
106
- env_name: "SCAN_SKIP_BUILD",
147
+
148
+ # output
149
+ FastlaneCore::ConfigItem.new(key: :open_report,
150
+ short_option: "-g",
151
+ env_name: "SCAN_OPEN_REPORT",
152
+ description: "Should the HTML report be opened when tests are completed?",
107
153
  is_string: false,
108
- type: Boolean,
109
154
  default_value: false),
110
155
  FastlaneCore::ConfigItem.new(key: :output_directory,
111
156
  short_option: "-o",
@@ -161,6 +206,31 @@ module Scan
161
206
  description: "Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf')",
162
207
  type: String,
163
208
  optional: true),
209
+ FastlaneCore::ConfigItem.new(key: :derived_data_path,
210
+ short_option: "-j",
211
+ env_name: "SCAN_DERIVED_DATA_PATH",
212
+ description: "The directory where build products and other derived data will go",
213
+ optional: true),
214
+ FastlaneCore::ConfigItem.new(key: :should_zip_build_products,
215
+ short_option: "-Z",
216
+ env_name: "SCAN_SHOULD_ZIP_BUILD_PRODUCTS",
217
+ description: "Should zip the derived data build products and place in output path?",
218
+ optional: true,
219
+ is_string: false,
220
+ default_value: false),
221
+ FastlaneCore::ConfigItem.new(key: :result_bundle,
222
+ short_option: "-z",
223
+ env_name: "SCAN_RESULT_BUNDLE",
224
+ is_string: false,
225
+ description: "Should an Xcode result bundle be generated in the output directory",
226
+ default_value: false,
227
+ optional: true),
228
+ FastlaneCore::ConfigItem.new(key: :use_clang_report_name,
229
+ description: "Generate the json compilation database with clang naming convention (compile_commands.json)",
230
+ is_string: false,
231
+ default_value: false),
232
+
233
+ # concurrency
164
234
  FastlaneCore::ConfigItem.new(key: :max_concurrent_simulators,
165
235
  type: Integer,
166
236
  env_name: "SCAN_MAX_CONCURRENT_SIMULATORS",
@@ -173,6 +243,14 @@ module Scan
173
243
  description: "Do not run test bundles in parallel on the specified destinations. Testing will occur on each destination serially. Equivalent to -disable-concurrent-testing",
174
244
  optional: true),
175
245
 
246
+ # build
247
+ FastlaneCore::ConfigItem.new(key: :skip_build,
248
+ description: "Should debug build be skipped before test build?",
249
+ short_option: "-r",
250
+ env_name: "SCAN_SKIP_BUILD",
251
+ is_string: false,
252
+ type: Boolean,
253
+ default_value: false),
176
254
  FastlaneCore::ConfigItem.new(key: :test_without_building,
177
255
  short_option: "-T",
178
256
  env_name: "SCAN_TEST_WITHOUT_BUILDING",
@@ -189,55 +267,17 @@ module Scan
189
267
  is_string: false,
190
268
  type: Boolean,
191
269
  optional: true),
192
- FastlaneCore::ConfigItem.new(key: :xctestrun,
193
- short_option: "-X",
194
- env_name: "SCAN_XCTESTRUN",
195
- description: "Run tests using the provided .xctestrun file",
196
- conflicting_options: [:build_for_testing],
197
- is_string: true,
198
- optional: true),
199
- FastlaneCore::ConfigItem.new(key: :derived_data_path,
200
- short_option: "-j",
201
- env_name: "SCAN_DERIVED_DATA_PATH",
202
- description: "The directory where build products and other derived data will go",
203
- optional: true),
204
- FastlaneCore::ConfigItem.new(key: :should_zip_build_products,
205
- short_option: "-Z",
206
- env_name: "SCAN_SHOULD_ZIP_BUILD_PRODUCTS",
207
- description: "Should zip the derived data build products and place in output path?",
208
- optional: true,
209
- is_string: false,
210
- default_value: false),
211
- FastlaneCore::ConfigItem.new(key: :result_bundle,
212
- short_option: "-z",
213
- env_name: "SCAN_RESULT_BUNDLE",
214
- is_string: false,
215
- description: "Should an Xcode result bundle be generated in the output directory",
216
- default_value: false,
217
- optional: true),
218
270
  FastlaneCore::ConfigItem.new(key: :sdk,
219
271
  short_option: "-k",
220
272
  env_name: "SCAN_SDK",
221
273
  description: "The SDK that should be used for building the application",
222
274
  optional: true),
223
- FastlaneCore::ConfigItem.new(key: :open_report,
224
- short_option: "-g",
225
- env_name: "SCAN_OPEN_REPORT",
226
- description: "Should the HTML report be opened when tests are completed?",
227
- is_string: false,
228
- default_value: false),
229
275
  FastlaneCore::ConfigItem.new(key: :configuration,
230
276
  short_option: "-q",
231
277
  env_name: "SCAN_CONFIGURATION",
232
278
  description: "The configuration to use when building the app. Defaults to 'Release'",
233
279
  default_value_dynamic: true,
234
280
  optional: true),
235
- FastlaneCore::ConfigItem.new(key: :destination,
236
- short_option: "-d",
237
- env_name: "SCAN_DESTINATION",
238
- description: "Use only if you're a pro, use the other options instead",
239
- is_string: false,
240
- optional: true),
241
281
  FastlaneCore::ConfigItem.new(key: :xcargs,
242
282
  short_option: "-x",
243
283
  env_name: "SCAN_XCARGS",
@@ -252,22 +292,8 @@ module Scan
252
292
  verify_block: proc do |value|
253
293
  UI.user_error!("File not found at path '#{File.expand_path(value)}'") unless File.exist?(value)
254
294
  end),
255
- FastlaneCore::ConfigItem.new(key: :only_testing,
256
- env_name: "SCAN_ONLY_TESTING",
257
- description: "Array of strings matching Test Bundle/Test Suite/Test Cases to run",
258
- optional: true,
259
- is_string: false,
260
- verify_block: proc do |value|
261
- verify_type('only_testing', [Array, String], value)
262
- end),
263
- FastlaneCore::ConfigItem.new(key: :skip_testing,
264
- env_name: "SCAN_SKIP_TESTING",
265
- description: "Array of strings matching Test Bundle/Test Suite/Test Cases to skip",
266
- optional: true,
267
- is_string: false,
268
- verify_block: proc do |value|
269
- verify_type('skip_testing', [Array, String], value)
270
- end),
295
+
296
+ # slack
271
297
  FastlaneCore::ConfigItem.new(key: :slack_url,
272
298
  short_option: "-i",
273
299
  env_name: "SLACK_URL",
@@ -297,29 +323,22 @@ module Scan
297
323
  description: "Only post on Slack if the tests fail",
298
324
  is_string: false,
299
325
  default_value: false),
300
- FastlaneCore::ConfigItem.new(key: :use_clang_report_name,
301
- description: "Generate the json compilation database with clang naming convention (compile_commands.json)",
302
- is_string: false,
303
- default_value: false),
326
+
327
+ # misc
328
+ FastlaneCore::ConfigItem.new(key: :destination,
329
+ short_option: "-d",
330
+ env_name: "SCAN_DESTINATION",
331
+ description: "Use only if you're a pro, use the other options instead",
332
+ is_string: false,
333
+ optional: true),
304
334
  FastlaneCore::ConfigItem.new(key: :custom_report_file_name,
305
335
  env_name: "SCAN_CUSTOM_REPORT_FILE_NAME",
306
336
  description: "Sets custom full report file name when generating a single report",
307
337
  deprecated: "Use `--output_files` instead",
308
338
  conflicting_options: [:output_files],
309
339
  optional: true,
310
- is_string: true),
311
- FastlaneCore::ConfigItem.new(key: :app_identifier,
312
- env_name: 'SCAN_APP_IDENTIFIER',
313
- optional: true,
314
- description: "The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)",
315
- code_gen_sensitive: true,
316
- default_value: CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier),
317
- default_value_dynamic: true),
318
- FastlaneCore::ConfigItem.new(key: :reinstall_app,
319
- env_name: 'SCAN_REINSTALL_APP',
320
- description: "Enabling this option will automatically uninstall the application before running it",
321
- default_value: false,
322
- is_string: false)
340
+ is_string: true)
341
+
323
342
  ]
324
343
  end
325
344
  end
@@ -5,22 +5,6 @@
5
5
  fastlane
6
6
  </a>
7
7
  </h3>
8
- <p align="center">
9
- <a href="https://docs.fastlane.tools/actions/deliver/">deliver</a> &bull;
10
- <a href="https://docs.fastlane.tools/actions/snapshot/">snapshot</a> &bull;
11
- <a href="https://docs.fastlane.tools/actions/frameit/">frameit</a> &bull;
12
- <a href="https://docs.fastlane.tools/actions/pem/">pem</a> &bull;
13
- <a href="https://docs.fastlane.tools/actions/sigh/">sigh</a> &bull;
14
- <a href="https://docs.fastlane.tools/actions/produce/">produce</a> &bull;
15
- <a href="https://docs.fastlane.tools/actions/cert/">cert</a> &bull;
16
- <b>spaceship</b> &bull;
17
- <a href="https://docs.fastlane.tools/actions/pilot/">pilot</a> &bull;
18
- <a href="https://github.com/fastlane/boarding">boarding</a> &bull;
19
- <a href="https://docs.fastlane.tools/actions/gym/">gym</a> &bull;
20
- <a href="https://docs.fastlane.tools/actions/scan/">scan</a> &bull;
21
- <a href="https://docs.fastlane.tools/actions/match/">match</a> &bull;
22
- <a href="https://docs.fastlane.tools/actions/precheck/">precheck</a>
23
- </p>
24
8
 
25
9
  -------
26
10
 
@@ -33,7 +17,7 @@
33
17
  [![Twitter: @FastlaneTools](https://img.shields.io/badge/contact-@FastlaneTools-blue.svg?style=flat)](https://twitter.com/FastlaneTools)
34
18
  [![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/fastlane/fastlane/blob/master/LICENSE)
35
19
 
36
- _spaceship_ exposes both the Apple Developer Center and the App Store Connect API. This fast and powerful API powers parts of fastlane, and can be leveraged for more advanced fastlane features. Scripting your Developer Center workflow has never been easier!
20
+ _spaceship_ exposes both the Apple Developer Center and the App Store Connect API. It’s super fast, well tested and supports all of the operations you can do via the browser. It powers parts of _fastlane_, and can be leveraged for more advanced _fastlane_ features. Scripting your Developer Center workflow has never been easier!
37
21
 
38
22
  Get in contact with the creators on Twitter: [@FastlaneTools](https://twitter.com/fastlanetools)
39
23
 
@@ -53,17 +37,21 @@ Get in contact with the creators on Twitter: [@FastlaneTools](https://twitter.co
53
37
 
54
38
  # What's spaceship?
55
39
 
56
- Up until now, the [fastlane tools](https://fastlane.tools) used web scraping to interact with Apple's web services. With spaceship it is possible to directly access the underlying APIs using a simple HTTP client only.
57
-
58
- Using spaceship, the execution time of [_sigh_](https://docs.fastlane.tools/actions/sigh/) was reduced from over 1 minute to less than 5 seconds.
40
+ _spaceship_ uses a combination of [5 different API endpoints](#api-endpoints), used by the Apple Developer Portal and Xcode. As no API offers everything we need, spaceship combines all APIs for you. [More details about the APIs](#technical-details).
59
41
 
60
- spaceship uses a combination of 3 different API endpoints, used by the Apple Developer Portal and Xcode. As no API offers everything we need, spaceship combines all APIs for you. [More details about the APIs](#technical-details).
42
+ - Blazing fast communication using only a HTTP client
43
+ - Object oriented access to all resources
44
+ - Resistant against front-end design changes of the of the Apple Developer Portal
45
+ - One central tool for the communication
46
+ - Automatic re-trying of requests in case a timeout occurs
47
+ - No web scraping
48
+ - 90%+ test coverage by stubbing server responses
61
49
 
62
50
  More details about why spaceship is useful on [spaceship.airforce](https://spaceship.airforce).
63
51
 
64
52
  > No matter how many apps or certificates you have, spaceship **can** handle your scale.
65
53
 
66
- Enough words, here is some code:
54
+ ## Example spaceship code
67
55
 
68
56
  ```ruby
69
57
  Spaceship.login
@@ -85,12 +73,16 @@ profile.download
85
73
 
86
74
  ## Speed
87
75
 
88
- How fast are tools using _spaceship_ compared to web scraping?
76
+ Before _spaceship_, the [fastlane tools](https://fastlane.tools) used web scraping to interact with Apple's web services. With spaceship it is possible to directly access the underlying APIs using a simple HTTP client only.
77
+
78
+ Using spaceship, the execution time of [_sigh_](https://docs.fastlane.tools/actions/sigh/) was reduced from over 1 minute to less than 5 seconds.
89
79
 
90
80
  ![assets/SpaceshipRecording.gif](assets/SpaceshipRecording.gif)
91
81
 
92
82
  # Installation
93
83
 
84
+ _spaceship_ is part of _fastlane_:
85
+
94
86
  sudo gem install fastlane
95
87
 
96
88
  # Usage
@@ -122,17 +114,15 @@ When your Apple account has 2 factor verification enabled, you'll automatically
122
114
  To generate a web session for your CI machine, use
123
115
 
124
116
  ```sh
125
- fastlane spaceauth -u apple@krausefx.com
117
+ fastlane spaceauth -u user@example.org
126
118
  ```
127
119
 
128
- This will authenticate you and provide a string that can be transferred to your CI system:
120
+ This will authenticate you and provide a string that can be transferred to your CI system. Copy everything from `---\n` to your CI server and provide it as environment variable named `FASTLANE_SESSION`. For example:
129
121
 
130
122
  ```
131
123
  export FASTLANE_SESSION='---\n- !ruby/object:HTTP::Cookie\n name: DES5c148586dfd451e55afbaaa5f62418f91\n value: HSARMTKNSRVTWFla1+yO4gVPowH17VaaaxPFnUdMUegQZxqy1Ie1c2v6bM1vSOzIbuOmrl/FNenlScsd/NbF7/Lw4cpnL15jsyg0TOJwP32tC/NguPiyOaaaU+jrj4tf4uKdIywVaaaFSRVT\n domain: idmsa.apple.com\n for_domain: true\n path: "/"\n secure: true\n httponly: true\n expires: 2016-04-27 23:55:56.000000000 Z\n max_age: \n created_at: 2016-03-28 16:55:57.032086000 -07:00\n accessed_at: 2016-03-28 19:11:17.828141000 -07:00\n'
132
124
  ```
133
125
 
134
- Copy everything from `---\n` to your CI server and provide it as environment variable named `FASTLANE_SESSION`.
135
-
136
126
  #### Bypass trusted device and use SMS for verification
137
127
 
138
128
  If you have a trusted device configured, Apple will not send a SMS code to your phone for your Apple account when you try to generate a web session with _fastlane_. Instead, a code will be displayed on one of your account's trusted devices. This can be problematic if you are trying to authenticate but don't have access to a trusted device. Take the following steps to circumvent the device and use SMS instead:
@@ -144,32 +134,20 @@ If you have a trusted device configured, Apple will not send a SMS code to your
144
134
 
145
135
  #### Transporter
146
136
 
147
- If you want to upload builds to TestFlight/App Store Connect from your CI, you have to generate an application specific password:
137
+ If you want to upload builds to TestFlight/App Store Connect from your CI, you have to generate and use an application specific password:
148
138
 
149
139
  1. Visit [appleid.apple.com/account/manage](https://appleid.apple.com/account/manage)
150
140
  1. Generate a new application specific password
151
141
  1. Provide the application specific password using an environment variable `FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD`.
152
142
 
153
- Alternatively you can enter the password when you're asked the first time _fastlane_ uploads a build.
143
+ Alternatively you can enter the application specific password when you're asked the first time _fastlane_ uploads a build.
154
144
 
155
- ### _spaceship_ in use
145
+ ## _spaceship_ in use
156
146
 
157
147
  All [fastlane tools](https://fastlane.tools) that communicate with Apple's web services in some way, use _spaceship_ to do so.
158
148
 
159
149
  # Technical Details
160
150
 
161
- ## HTTP Client
162
-
163
- Up until now all [fastlane tools](https://fastlane.tools) used web scraping to interact with Apple's web services. _spaceship_ uses a simple HTTP client only, resulting in much less overhead and extremely improved speed.
164
-
165
- Advantages of _spaceship_ (HTTP client) over web scraping:
166
-
167
- - Blazing fast :rocket: 90% faster than previous methods
168
- - No more overhead by loading images, HTML, JS and CSS files on each page load
169
- - Great test coverage by stubbing server responses
170
- - Resistant against design changes of the Apple Developer Portal
171
- - Automatic re-trying of requests in case a timeout occurs
172
-
173
151
  ## API Endpoints
174
152
 
175
153
  Overview of the used API endpoints
metadata CHANGED
@@ -1,33 +1,33 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.109.1
4
+ version: 2.110.0
5
5
  platform: ruby
6
6
  authors:
7
+ - Felix Krause
8
+ - Matthew Ellis
7
9
  - Jorge Revuelta H
8
- - Jan Piotrowski
9
- - Stefan Natchev
10
- - Manu Wallner
11
10
  - Luka Mirosevic
12
- - Aaron Brager
13
- - Matthew Ellis
11
+ - Iulian Onofrei
12
+ - Joshua Liebowitz
14
13
  - Maksym Grebenets
14
+ - Josh Holtz
15
+ - Jan Piotrowski
16
+ - Stefan Natchev
15
17
  - Jérôme Lacoste
16
- - Fumiya Nakamura
17
- - Joshua Liebowitz
18
+ - Aaron Brager
18
19
  - Danielle Tomlinson
19
- - Olivier Halligon
20
- - Iulian Onofrei
20
+ - Jimmy Dee
21
+ - Kohki Miki
21
22
  - Andrew McBurney
22
23
  - Helmut Januschka
23
- - Josh Holtz
24
- - Kohki Miki
25
- - Felix Krause
26
- - Jimmy Dee
24
+ - Olivier Halligon
25
+ - Manu Wallner
26
+ - Fumiya Nakamura
27
27
  autorequire:
28
28
  bindir: bin
29
29
  cert_chain: []
30
- date: 2018-12-05 00:00:00.000000000 Z
30
+ date: 2018-12-11 00:00:00.000000000 Z
31
31
  dependencies:
32
32
  - !ruby/object:Gem::Dependency
33
33
  name: slack-notifier
@@ -619,6 +619,26 @@ dependencies:
619
619
  - - "<"
620
620
  - !ruby/object:Gem::Version
621
621
  version: 0.24.0
622
+ - !ruby/object:Gem::Dependency
623
+ name: google-cloud-storage
624
+ requirement: !ruby/object:Gem::Requirement
625
+ requirements:
626
+ - - ">="
627
+ - !ruby/object:Gem::Version
628
+ version: 1.15.0
629
+ - - "<"
630
+ - !ruby/object:Gem::Version
631
+ version: 2.0.0
632
+ type: :runtime
633
+ prerelease: false
634
+ version_requirements: !ruby/object:Gem::Requirement
635
+ requirements:
636
+ - - ">="
637
+ - !ruby/object:Gem::Version
638
+ version: 1.15.0
639
+ - - "<"
640
+ - !ruby/object:Gem::Version
641
+ version: 2.0.0
622
642
  - !ruby/object:Gem::Dependency
623
643
  name: emoji_regex
624
644
  requirement: !ruby/object:Gem::Requirement
@@ -903,6 +923,7 @@ files:
903
923
  - deliver/lib/assets/ScreenshotsHelp
904
924
  - deliver/lib/assets/summary.html.erb
905
925
  - deliver/lib/deliver.rb
926
+ - deliver/lib/deliver/.options.rb.swp
906
927
  - deliver/lib/deliver/app_screenshot.rb
907
928
  - deliver/lib/deliver/commands_generator.rb
908
929
  - deliver/lib/deliver/detect_values.rb
@@ -1297,7 +1318,6 @@ files:
1297
1318
  - fastlane_core/lib/fastlane_core/build_watcher.rb
1298
1319
  - fastlane_core/lib/fastlane_core/cert_checker.rb
1299
1320
  - fastlane_core/lib/fastlane_core/command_executor.rb
1300
- - fastlane_core/lib/fastlane_core/configuration/.config_item.rb.swp
1301
1321
  - fastlane_core/lib/fastlane_core/configuration/commander_generator.rb
1302
1322
  - fastlane_core/lib/fastlane_core/configuration/config_item.rb
1303
1323
  - fastlane_core/lib/fastlane_core/configuration/configuration.rb
@@ -1392,6 +1412,7 @@ files:
1392
1412
  - match/lib/match/encryption/interface.rb
1393
1413
  - match/lib/match/encryption/openssl.rb
1394
1414
  - match/lib/match/generator.rb
1415
+ - match/lib/match/migrate.rb
1395
1416
  - match/lib/match/module.rb
1396
1417
  - match/lib/match/nuke.rb
1397
1418
  - match/lib/match/options.rb
@@ -1400,6 +1421,7 @@ files:
1400
1421
  - match/lib/match/spaceship_ensure.rb
1401
1422
  - match/lib/match/storage.rb
1402
1423
  - match/lib/match/storage/git_storage.rb
1424
+ - match/lib/match/storage/google_cloud_storage.rb
1403
1425
  - match/lib/match/storage/interface.rb
1404
1426
  - match/lib/match/table_printer.rb
1405
1427
  - match/lib/match/utils.rb
@@ -1411,7 +1433,6 @@ files:
1411
1433
  - pem/lib/pem/options.rb
1412
1434
  - pilot/README.md
1413
1435
  - pilot/lib/pilot.rb
1414
- - pilot/lib/pilot/.options.rb.swp
1415
1436
  - pilot/lib/pilot/build_manager.rb
1416
1437
  - pilot/lib/pilot/commands_generator.rb
1417
1438
  - pilot/lib/pilot/features.rb