fastlane 2.109.1 → 2.110.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +66 -66
- data/deliver/lib/deliver/.options.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/download.rb +1 -0
- data/fastlane/lib/fastlane/actions/install_on_device.rb +2 -2
- data/fastlane/lib/fastlane/actions/resign.rb +5 -17
- data/fastlane/lib/fastlane/helper/adb_helper.rb +1 -1
- data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +3 -3
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +73 -65
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +5 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +29 -29
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +18 -16
- data/frameit/lib/frameit/options.rb +1 -1
- data/match/lib/match.rb +1 -0
- data/match/lib/match/change_password.rb +7 -0
- data/match/lib/match/commands_generator.rb +15 -2
- data/match/lib/match/encryption.rb +3 -0
- data/match/lib/match/encryption/openssl.rb +2 -2
- data/match/lib/match/migrate.rb +97 -0
- data/match/lib/match/module.rb +1 -1
- data/match/lib/match/nuke.rb +22 -6
- data/match/lib/match/options.rb +19 -1
- data/match/lib/match/runner.rb +58 -15
- data/match/lib/match/spaceship_ensure.rb +6 -1
- data/match/lib/match/storage.rb +4 -0
- data/match/lib/match/storage/git_storage.rb +1 -10
- data/match/lib/match/storage/google_cloud_storage.rb +227 -0
- data/match/lib/match/storage/interface.rb +9 -3
- data/scan/lib/scan/options.rb +105 -86
- data/spaceship/README.md +20 -42
- metadata +38 -17
- data/fastlane_core/lib/fastlane_core/configuration/.config_item.rb.swp +0 -0
- 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:
|
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
|
-
|
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
|
data/scan/lib/scan/options.rb
CHANGED
@@ -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
|
-
|
70
|
-
|
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
|
-
|
73
|
-
|
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
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
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
|
-
|
256
|
-
|
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
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
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
|
-
|
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
|
data/spaceship/README.md
CHANGED
@@ -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> •
|
10
|
-
<a href="https://docs.fastlane.tools/actions/snapshot/">snapshot</a> •
|
11
|
-
<a href="https://docs.fastlane.tools/actions/frameit/">frameit</a> •
|
12
|
-
<a href="https://docs.fastlane.tools/actions/pem/">pem</a> •
|
13
|
-
<a href="https://docs.fastlane.tools/actions/sigh/">sigh</a> •
|
14
|
-
<a href="https://docs.fastlane.tools/actions/produce/">produce</a> •
|
15
|
-
<a href="https://docs.fastlane.tools/actions/cert/">cert</a> •
|
16
|
-
<b>spaceship</b> •
|
17
|
-
<a href="https://docs.fastlane.tools/actions/pilot/">pilot</a> •
|
18
|
-
<a href="https://github.com/fastlane/boarding">boarding</a> •
|
19
|
-
<a href="https://docs.fastlane.tools/actions/gym/">gym</a> •
|
20
|
-
<a href="https://docs.fastlane.tools/actions/scan/">scan</a> •
|
21
|
-
<a href="https://docs.fastlane.tools/actions/match/">match</a> •
|
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.
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
-
|
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.
|
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
|
-
-
|
13
|
-
-
|
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
|
-
-
|
17
|
-
- Joshua Liebowitz
|
18
|
+
- Aaron Brager
|
18
19
|
- Danielle Tomlinson
|
19
|
-
-
|
20
|
-
-
|
20
|
+
- Jimmy Dee
|
21
|
+
- Kohki Miki
|
21
22
|
- Andrew McBurney
|
22
23
|
- Helmut Januschka
|
23
|
-
-
|
24
|
-
-
|
25
|
-
-
|
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-
|
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
|