fastlane 2.196.0 → 2.199.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 +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
|