fastlane 2.196.0 → 2.199.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.
- checksums.yaml +4 -4
- data/README.md +94 -94
- data/cert/lib/cert/runner.rb +5 -2
- data/deliver/lib/assets/ScreenshotsHelp +29 -6
- data/deliver/lib/deliver/app_screenshot.rb +5 -4
- data/deliver/lib/deliver/app_screenshot_iterator.rb +1 -1
- data/deliver/lib/deliver/runner.rb +1 -1
- data/deliver/lib/deliver/upload_screenshots.rb +1 -1
- data/fastlane/lib/.DS_Store +0 -0
- data/fastlane/lib/fastlane/.DS_Store +0 -0
- data/fastlane/lib/fastlane/actions/.DS_Store +0 -0
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +1 -1
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +61 -45
- data/fastlane/lib/fastlane/actions/ensure_xcode_version.rb +1 -1
- data/fastlane/lib/fastlane/actions/get_push_certificate.rb +1 -1
- data/fastlane/lib/fastlane/actions/get_version_number.rb +6 -2
- data/fastlane/lib/fastlane/actions/notarize.rb +29 -11
- data/fastlane/lib/fastlane/actions/set_github_release.rb +11 -5
- data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +18 -1
- data/fastlane/lib/fastlane/actions/xcversion.rb +18 -3
- data/fastlane/lib/fastlane/documentation/docs_generator.rb +17 -12
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +1 -1
- data/fastlane/swift/Fastlane.swift +66 -21
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +5 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
- data/fastlane/swift/Runner.swift +3 -7
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +3 -3
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
- data/fastlane/swift/formatting/Brewfile.lock.json +26 -21
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +38 -7
- data/frameit/lib/frameit/editor.rb +16 -18
- data/frameit/lib/frameit/trim_box.rb +6 -0
- data/gym/lib/gym/generators/build_command_generator.rb +1 -1
- data/gym/lib/gym/options.rb +6 -0
- data/match/lib/match/nuke.rb +79 -1
- data/match/lib/match/spaceship_ensure.rb +1 -0
- data/pem/lib/pem/manager.rb +29 -6
- data/pem/lib/pem/options.rb +9 -0
- data/pilot/lib/pilot/build_manager.rb +1 -1
- data/scan/lib/scan/options.rb +2 -2
- data/scan/lib/scan/runner.rb +1 -1
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +1 -1
- data/spaceship/lib/spaceship/client.rb +35 -15
- data/spaceship/lib/spaceship/commands_generator.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/build.rb +4 -2
- data/spaceship/lib/spaceship/connect_api/models/build_bundle.rb +59 -0
- data/spaceship/lib/spaceship/connect_api/models/certificate.rb +3 -0
- data/spaceship/lib/spaceship/connect_api/response.rb +13 -0
- data/spaceship/lib/spaceship/connect_api.rb +1 -0
- data/spaceship/lib/spaceship/globals.rb +9 -0
- data/spaceship/lib/spaceship/spaceauth_runner.rb +1 -1
- data/trainer/lib/.DS_Store +0 -0
- metadata +24 -18
@@ -5,6 +5,7 @@ module Fastlane
|
|
5
5
|
def self.run(params)
|
6
6
|
package_path = params[:package]
|
7
7
|
bundle_id = params[:bundle_id]
|
8
|
+
skip_stapling = params[:skip_stapling]
|
8
9
|
try_early_stapling = params[:try_early_stapling]
|
9
10
|
print_log = params[:print_log]
|
10
11
|
verbose = params[:verbose]
|
@@ -38,13 +39,13 @@ module Fastlane
|
|
38
39
|
UI.user_error!('Could not read bundle identifier, provide as a parameter') unless bundle_id
|
39
40
|
|
40
41
|
if use_notarytool
|
41
|
-
notarytool(params, package_path, bundle_id,
|
42
|
+
notarytool(params, package_path, bundle_id, skip_stapling, print_log, verbose, api_key, compressed_package_path)
|
42
43
|
else
|
43
|
-
altool(params, package_path, bundle_id, try_early_stapling, print_log, verbose, api_key, compressed_package_path)
|
44
|
+
altool(params, package_path, bundle_id, try_early_stapling, skip_stapling, print_log, verbose, api_key, compressed_package_path)
|
44
45
|
end
|
45
46
|
end
|
46
47
|
|
47
|
-
def self.notarytool(params, package_path, bundle_id,
|
48
|
+
def self.notarytool(params, package_path, bundle_id, skip_stapling, print_log, verbose, api_key, compressed_package_path)
|
48
49
|
temp_file = nil
|
49
50
|
|
50
51
|
# Create authorization part of command with either API Key or Apple ID
|
@@ -89,10 +90,15 @@ module Fastlane
|
|
89
90
|
submission_id = notarization_info["id"]
|
90
91
|
UI.success("Successfully uploaded package to notarization service with request identifier #{submission_id}")
|
91
92
|
|
92
|
-
|
93
|
-
|
93
|
+
if skip_stapling
|
94
|
+
UI.success("Successfully notarized artifact")
|
95
|
+
else
|
96
|
+
UI.message('Stapling package')
|
94
97
|
|
95
|
-
|
98
|
+
self.staple(package_path, verbose)
|
99
|
+
|
100
|
+
UI.success("Successfully notarized and stapled package")
|
101
|
+
end
|
96
102
|
when 'Invalid'
|
97
103
|
UI.user_error!("Could not notarize package with message '#{notarization_info['statusSummary']}'")
|
98
104
|
else
|
@@ -102,7 +108,7 @@ module Fastlane
|
|
102
108
|
temp_file.delete if temp_file
|
103
109
|
end
|
104
110
|
|
105
|
-
def self.altool(params, package_path, bundle_id, try_early_stapling, print_log, verbose, api_key, compressed_package_path)
|
111
|
+
def self.altool(params, package_path, bundle_id, try_early_stapling, skip_stapling, print_log, verbose, api_key, compressed_package_path)
|
106
112
|
UI.message('Uploading package to notarization service, might take a while')
|
107
113
|
|
108
114
|
notarization_upload_command = "xcrun altool --notarize-app -t osx -f \"#{compressed_package_path || package_path}\" --primary-bundle-id #{bundle_id} --output-format xml"
|
@@ -133,7 +139,7 @@ module Fastlane
|
|
133
139
|
while notarization_info.empty? || (notarization_info['Status'] == 'in progress')
|
134
140
|
if notarization_info.empty?
|
135
141
|
UI.message('Waiting to query request status')
|
136
|
-
elsif try_early_stapling
|
142
|
+
elsif try_early_stapling && !skip_stapling
|
137
143
|
UI.message('Request in progress, trying early staple')
|
138
144
|
|
139
145
|
begin
|
@@ -182,11 +188,15 @@ module Fastlane
|
|
182
188
|
|
183
189
|
case notarization_info['Status']
|
184
190
|
when 'success'
|
185
|
-
|
191
|
+
if skip_stapling
|
192
|
+
UI.success("Successfully notarized artifact#{log_suffix}")
|
193
|
+
else
|
194
|
+
UI.message('Stapling package')
|
186
195
|
|
187
|
-
|
196
|
+
self.staple(package_path, verbose)
|
188
197
|
|
189
|
-
|
198
|
+
UI.success("Successfully notarized and stapled package#{log_suffix}")
|
199
|
+
end
|
190
200
|
when 'invalid'
|
191
201
|
UI.user_error!("Could not notarize package with message '#{notarization_info['Status Message']}'#{log_suffix}")
|
192
202
|
else
|
@@ -262,6 +272,14 @@ module Fastlane
|
|
262
272
|
env_name: 'FL_NOTARIZE_TRY_EARLY_STAPLING',
|
263
273
|
description: 'Whether to try early stapling while the notarization request is in progress',
|
264
274
|
optional: true,
|
275
|
+
conflicting_options: [:skip_stapling],
|
276
|
+
default_value: false,
|
277
|
+
type: Boolean),
|
278
|
+
FastlaneCore::ConfigItem.new(key: :skip_stapling,
|
279
|
+
env_name: 'FL_NOTARIZE_SKIP_STAPLING',
|
280
|
+
description: 'Do not staple the notarization ticket to the artifact; useful for single file executables and ZIP archives',
|
281
|
+
optional: true,
|
282
|
+
conflicting_options: [:try_early_stapling],
|
265
283
|
default_value: false,
|
266
284
|
type: Boolean),
|
267
285
|
FastlaneCore::ConfigItem.new(key: :bundle_id,
|
@@ -19,11 +19,12 @@ module Fastlane
|
|
19
19
|
|
20
20
|
payload = {
|
21
21
|
'tag_name' => params[:tag_name],
|
22
|
-
'name' => params[:name],
|
23
|
-
'body' => params[:description],
|
24
22
|
'draft' => !!params[:is_draft],
|
25
|
-
'prerelease' => !!params[:is_prerelease]
|
23
|
+
'prerelease' => !!params[:is_prerelease],
|
24
|
+
'generate_release_notes' => !!params[:is_generate_release_notes]
|
26
25
|
}
|
26
|
+
payload['name'] = params[:name] if params[:name]
|
27
|
+
payload['body'] = params[:description] if params[:description]
|
27
28
|
payload['target_commitish'] = params[:commitish] if params[:commitish]
|
28
29
|
|
29
30
|
GithubApiAction.run(
|
@@ -48,8 +49,7 @@ module Fastlane
|
|
48
49
|
UI.user_error!("You are not authorized to access #{repo_name}, please make sure you provided a valid API token (GITHUB_API_TOKEN)")
|
49
50
|
end,
|
50
51
|
'*' => proc do |result|
|
51
|
-
UI.
|
52
|
-
return nil
|
52
|
+
UI.user_error!("GitHub responded with #{result[:status]}:#{result[:body]}")
|
53
53
|
end
|
54
54
|
}
|
55
55
|
) do |result|
|
@@ -221,6 +221,12 @@ module Fastlane
|
|
221
221
|
optional: true,
|
222
222
|
default_value: false,
|
223
223
|
type: Boolean),
|
224
|
+
FastlaneCore::ConfigItem.new(key: :is_generate_release_notes,
|
225
|
+
env_name: "FL_SET_GITHUB_RELEASE_IS_GENERATE_RELEASE_NOTES",
|
226
|
+
description: "Whether the name and body of this release should be generated automatically",
|
227
|
+
optional: true,
|
228
|
+
default_value: false,
|
229
|
+
type: Boolean),
|
224
230
|
FastlaneCore::ConfigItem.new(key: :upload_assets,
|
225
231
|
env_name: "FL_SET_GITHUB_RELEASE_UPLOAD_ASSETS",
|
226
232
|
description: "Path to assets to be uploaded with the release",
|
@@ -50,6 +50,10 @@ module Fastlane
|
|
50
50
|
set_build_setting(config, "PROVISIONING_PROFILE_SPECIFIER", params[:profile_name])
|
51
51
|
UI.important("Set Provisioning Profile name to: #{params[:profile_name]} for target: #{target.name} for build configuration: #{config.name}")
|
52
52
|
end
|
53
|
+
if params[:entitlements_file_path]
|
54
|
+
set_build_setting(config, "CODE_SIGN_ENTITLEMENTS", params[:entitlements_file_path])
|
55
|
+
UI.important("Set Entitlements file path to: #{params[:entitlements_file_path]} for target: #{target.name} for build configuration: #{config.name}")
|
56
|
+
end
|
53
57
|
# Since Xcode 8, this is no longer needed, you simply use PROVISIONING_PROFILE_SPECIFIER
|
54
58
|
if params[:profile_uuid]
|
55
59
|
set_build_setting(config, "PROVISIONING_PROFILE", params[:profile_uuid])
|
@@ -143,6 +147,10 @@ module Fastlane
|
|
143
147
|
env_name: "FL_CODE_SIGN_IDENTITY",
|
144
148
|
description: "Code signing identity type (iPhone Developer, iPhone Distribution)",
|
145
149
|
optional: true),
|
150
|
+
FastlaneCore::ConfigItem.new(key: :entitlements_file_path,
|
151
|
+
env_name: "FL_CODE_SIGN_ENTITLEMENTS_FILE_PATH",
|
152
|
+
description: "Path to your entitlements file",
|
153
|
+
optional: true),
|
146
154
|
FastlaneCore::ConfigItem.new(key: :profile_name,
|
147
155
|
env_name: "FL_PROVISIONING_PROFILE_SPECIFIER",
|
148
156
|
description: "Provisioning profile name to use for code signing",
|
@@ -172,6 +180,15 @@ module Fastlane
|
|
172
180
|
update_code_signing_settings(
|
173
181
|
use_automatic_signing: true,
|
174
182
|
path: "demo-project/demo/demo.xcodeproj"
|
183
|
+
)',
|
184
|
+
' # more advanced manual code signing
|
185
|
+
update_code_signing_settings(
|
186
|
+
use_automatic_signing: true,
|
187
|
+
path: "demo-project/demo/demo.xcodeproj",
|
188
|
+
team_id: "QABC123DEV",
|
189
|
+
bundle_identifier: "com.demoapp.QABC123DEV",
|
190
|
+
profile_name: "Demo App Deployment Profile",
|
191
|
+
entitlements_file_path: "Demo App/generated/New.entitlements"
|
175
192
|
)'
|
176
193
|
]
|
177
194
|
end
|
@@ -185,7 +202,7 @@ module Fastlane
|
|
185
202
|
end
|
186
203
|
|
187
204
|
def self.authors
|
188
|
-
["mathiasAichinger", "hjanuschka", "p4checo", "portellaa", "aeons", "att55"]
|
205
|
+
["mathiasAichinger", "hjanuschka", "p4checo", "portellaa", "aeons", "att55", "abcdev"]
|
189
206
|
end
|
190
207
|
|
191
208
|
def self.is_supported?(platform)
|
@@ -5,6 +5,7 @@ module Fastlane
|
|
5
5
|
Actions.verify_gem!('xcode-install')
|
6
6
|
|
7
7
|
version = params[:version]
|
8
|
+
|
8
9
|
xcode = Helper::XcversionHelper.find_xcode(version)
|
9
10
|
UI.user_error!("Cannot find an installed Xcode satisfying '#{version}'") if xcode.nil?
|
10
11
|
|
@@ -14,16 +15,29 @@ module Fastlane
|
|
14
15
|
ENV["DEVELOPER_DIR"] = File.join(xcode.path, "/Contents/Developer")
|
15
16
|
end
|
16
17
|
|
18
|
+
def self.read_xcode_version_file
|
19
|
+
xcode_version_paths = Dir.glob(".xcode-version")
|
20
|
+
|
21
|
+
if xcode_version_paths.first
|
22
|
+
return File.read(xcode_version_paths.first).strip
|
23
|
+
end
|
24
|
+
|
25
|
+
return nil
|
26
|
+
end
|
27
|
+
|
17
28
|
def self.description
|
18
29
|
"Select an Xcode to use by version specifier"
|
19
30
|
end
|
20
31
|
|
21
32
|
def self.details
|
22
|
-
|
33
|
+
[
|
34
|
+
"Finds and selects a version of an installed Xcode that best matches the provided [`Gem::Version` requirement specifier](http://www.rubydoc.info/github/rubygems/rubygems/Gem/Version)",
|
35
|
+
"You can either manually provide a specific version using `version:` or you make use of the `.xcode-version` file."
|
36
|
+
].join("\n")
|
23
37
|
end
|
24
38
|
|
25
39
|
def self.authors
|
26
|
-
["oysta"]
|
40
|
+
["oysta", "rogerluan"]
|
27
41
|
end
|
28
42
|
|
29
43
|
def self.available_options
|
@@ -31,7 +45,8 @@ module Fastlane
|
|
31
45
|
FastlaneCore::ConfigItem.new(key: :version,
|
32
46
|
env_name: "FL_XCODE_VERSION",
|
33
47
|
description: "The version of Xcode to select specified as a Gem::Version requirement string (e.g. '~> 7.1.0')",
|
34
|
-
|
48
|
+
default_value: self.read_xcode_version_file,
|
49
|
+
default_value_dynamic: true,
|
35
50
|
verify_block: Helper::XcversionHelper::Verify.method(:requirement))
|
36
51
|
]
|
37
52
|
end
|
@@ -4,21 +4,18 @@ module Fastlane
|
|
4
4
|
output_path ||= File.join(FastlaneCore::FastlaneFolder.path || '.', 'README.md')
|
5
5
|
|
6
6
|
output = ["fastlane documentation"]
|
7
|
-
output << "
|
7
|
+
output << "----"
|
8
|
+
output << ""
|
8
9
|
|
9
10
|
output << "# Installation"
|
10
11
|
output << ""
|
11
12
|
output << "Make sure you have the latest version of the Xcode command line tools installed:"
|
12
13
|
output << ""
|
13
|
-
output << "```"
|
14
|
+
output << "```sh"
|
14
15
|
output << "xcode-select --install"
|
15
16
|
output << "```"
|
16
17
|
output << ""
|
17
|
-
output << "
|
18
|
-
output << "```"
|
19
|
-
output << "[sudo] gem install fastlane -NV"
|
20
|
-
output << "```"
|
21
|
-
output << "or alternatively using `brew install fastlane`"
|
18
|
+
output << "For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane)"
|
22
19
|
output << ""
|
23
20
|
output << "# Available Actions"
|
24
21
|
|
@@ -32,7 +29,10 @@ module Fastlane
|
|
32
29
|
next
|
33
30
|
end
|
34
31
|
|
35
|
-
|
32
|
+
if platform
|
33
|
+
output << ""
|
34
|
+
output << "## #{formatted_platform(platform)}"
|
35
|
+
end
|
36
36
|
|
37
37
|
lanes.each do |lane_name, lane|
|
38
38
|
next if lane.is_private
|
@@ -45,8 +45,10 @@ module Fastlane
|
|
45
45
|
end
|
46
46
|
|
47
47
|
output << "This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run."
|
48
|
-
output << "
|
49
|
-
output << "
|
48
|
+
output << ""
|
49
|
+
output << "More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools)."
|
50
|
+
output << ""
|
51
|
+
output << "The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools)."
|
50
52
|
output << ""
|
51
53
|
|
52
54
|
begin
|
@@ -78,10 +80,13 @@ module Fastlane
|
|
78
80
|
full_name = [platform, lane].reject(&:nil?).join(' ')
|
79
81
|
|
80
82
|
output = []
|
83
|
+
output << ""
|
81
84
|
output << "### #{full_name}"
|
85
|
+
output << ""
|
86
|
+
output << "```sh"
|
87
|
+
output << "[bundle exec] fastlane #{full_name}"
|
82
88
|
output << "```"
|
83
|
-
output << "
|
84
|
-
output << "```"
|
89
|
+
output << ""
|
85
90
|
output << description
|
86
91
|
output
|
87
92
|
end
|