fastlane 2.44.0.beta.20170630010021 → 2.44.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/deliver/lib/deliver/options.rb +1 -1
- data/fastlane/lib/fastlane/actions/hockey.rb +1 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane_core/lib/fastlane_core/helper.rb +1 -1
- data/fastlane_core/lib/fastlane_core/project.rb +1 -1
- data/gym/README.md +14 -0
- data/gym/lib/gym/detect_values.rb +75 -0
- data/gym/lib/gym/error_handler.rb +4 -0
- metadata +17 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32e5c6e2bb77ee5eb7fc4c7ed5e21ea5a1989486
|
4
|
+
data.tar.gz: e2d209799b8b192c7acd63935457294431c0d64f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42095a29dd7a3b33474a72b5a68ff810f5110fcb066163f497575a55146c8f127d3eeea27075bf18aa7b28b160637db083ac4bbfdc92d61a96dc68cbe4cf2ea5
|
7
|
+
data.tar.gz: 694821c94a136fe86c1b54250a3aa4f017aea199bd82d586c48194f9de9039ba17bc3abbc5acc2a211af1bdd0744b1c7c752c5240085a055f235a9fda56d3b4f
|
@@ -112,7 +112,7 @@ module Deliver
|
|
112
112
|
is_string: false,
|
113
113
|
default_value: false),
|
114
114
|
FastlaneCore::ConfigItem.new(key: :phased_release,
|
115
|
-
description: "Enable
|
115
|
+
description: "Enable the phased release feature of iTC",
|
116
116
|
optional: true,
|
117
117
|
is_string: false,
|
118
118
|
default_value: nil),
|
@@ -189,7 +189,7 @@ module Fastlane
|
|
189
189
|
def self.download_url(body)
|
190
190
|
version_url = body['public_url']
|
191
191
|
version_url = body['public_url'] + '/app_versions/' + body['config_url'].split('/').last if body['config_url']
|
192
|
-
version_url = body['public_url'] + '/app_versions/' +
|
192
|
+
version_url = body['public_url'] + '/app_versions/' + body['version'] if body['version']
|
193
193
|
version_url
|
194
194
|
end
|
195
195
|
|
@@ -213,7 +213,7 @@ module FastlaneCore
|
|
213
213
|
keychain_path
|
214
214
|
end
|
215
215
|
|
216
|
-
# @return true if
|
216
|
+
# @return true if Xcode version is higher than 8.3
|
217
217
|
def self.xcode_at_least?(version)
|
218
218
|
FastlaneCore::UI.user_error!("Unable to locate Xcode. Please make sure to have Xcode installed on your machine") if xcode_version.nil?
|
219
219
|
v = xcode_version
|
@@ -292,7 +292,7 @@ module FastlaneCore
|
|
292
292
|
end
|
293
293
|
|
294
294
|
# Get the build settings for our project
|
295
|
-
#
|
295
|
+
# e.g. to properly get the DerivedData folder
|
296
296
|
# @param [String] The key of which we want the value for (e.g. "PRODUCT_NAME")
|
297
297
|
def build_settings(key: nil, optional: true)
|
298
298
|
unless @build_settings
|
data/gym/README.md
CHANGED
@@ -175,6 +175,20 @@ export_options(
|
|
175
175
|
)
|
176
176
|
```
|
177
177
|
|
178
|
+
Optional: If _gym_ can't automatically detect the provisioning profiles to use, you can pass a mapping of bundle identifiers to provisioning profiles:
|
179
|
+
|
180
|
+
```ruby
|
181
|
+
export_options(
|
182
|
+
method: "app-store",
|
183
|
+
provisioningProfiles: {
|
184
|
+
"com.example.bundleid": "Provisioning Profile Name",
|
185
|
+
"com.example.bundleid2": "Provisioning Profile Name 2",
|
186
|
+
}
|
187
|
+
)
|
188
|
+
```
|
189
|
+
|
190
|
+
**Note**: If you use [fastlane](https://fastlane.tools) with [match](https://fastlane.tools/match) you don't need to provide those values manually.
|
191
|
+
|
178
192
|
For the list of available options run `xcodebuild -help`.
|
179
193
|
|
180
194
|
## Setup code signing
|
@@ -14,6 +14,8 @@ module Gym
|
|
14
14
|
FastlaneCore::Project.detect_projects(config)
|
15
15
|
Gym.project = FastlaneCore::Project.new(config)
|
16
16
|
|
17
|
+
detect_selected_provisioning_profiles
|
18
|
+
|
17
19
|
# Go into the project's folder, as there might be a Gymfile there
|
18
20
|
Dir.chdir(File.expand_path("..", Gym.project.path)) do
|
19
21
|
config.load_configuration_file(Gym.gymfile_name)
|
@@ -54,6 +56,79 @@ module Gym
|
|
54
56
|
CFPropertyList.native_types(CFPropertyList::List.new(file: path).value)
|
55
57
|
end
|
56
58
|
|
59
|
+
# Since Xcode 9 you need to provide the explicit mapping of what provisioning profile to use for
|
60
|
+
# each target of your app
|
61
|
+
# rubocop:disable Style/MultilineBlockChain
|
62
|
+
def self.detect_selected_provisioning_profiles
|
63
|
+
return if Gym.config[:export_options] && Gym.config[:export_options][:provisioningProfiles]
|
64
|
+
|
65
|
+
require 'xcodeproj'
|
66
|
+
|
67
|
+
provisioning_profile_mapping = {}
|
68
|
+
|
69
|
+
# Find the xcodeproj file, as the information isn't included in the workspace file
|
70
|
+
if Gym.project.workspace?
|
71
|
+
# We have a reference to the workspace, let's find the xcodeproj file
|
72
|
+
# For some reason the `plist` gem can't parse the content file
|
73
|
+
# so we'll use a regex to find all group references
|
74
|
+
|
75
|
+
workspace_data_path = File.join(Gym.project.path, "contents.xcworkspacedata")
|
76
|
+
workspace_data = File.read(workspace_data_path)
|
77
|
+
project_paths = workspace_data.scan(/\"group:(.*)\"/).collect do |current_match|
|
78
|
+
# It's a relative path from the workspace file
|
79
|
+
File.join(File.expand_path("..", Gym.project.path), current_match.first)
|
80
|
+
end.find_all do |current_match|
|
81
|
+
!current_match.end_with?("Pods/Pods.xcodeproj")
|
82
|
+
end
|
83
|
+
else
|
84
|
+
project_paths = [Gym.project.path]
|
85
|
+
end
|
86
|
+
|
87
|
+
# Because there might be multiple projects inside a workspace
|
88
|
+
# we iterate over all of them (except for CocoaPods)
|
89
|
+
project_paths.each do |project_path|
|
90
|
+
UI.verbose("Parsing project file '#{project_path}' to find selected provisioning profiles")
|
91
|
+
begin
|
92
|
+
project = Xcodeproj::Project.open(project_path)
|
93
|
+
project.targets.each do |target|
|
94
|
+
target.build_configuration_list.build_configurations.each do |build_configuration|
|
95
|
+
current = build_configuration.build_settings
|
96
|
+
|
97
|
+
bundle_identifier = current["PRODUCT_BUNDLE_IDENTIFIER"]
|
98
|
+
provisioning_profile_specifier = current["PROVISIONING_PROFILE_SPECIFIER"]
|
99
|
+
next if provisioning_profile_specifier.to_s.length == 0
|
100
|
+
|
101
|
+
provisioning_profile_mapping[bundle_identifier] = provisioning_profile_specifier
|
102
|
+
end
|
103
|
+
end
|
104
|
+
rescue => ex
|
105
|
+
# We catch errors here, as we might run into an exception on one included project
|
106
|
+
# But maybe the next project actually contains the information we need
|
107
|
+
if Helper.xcode_at_least?("9.0")
|
108
|
+
UI.error(ex)
|
109
|
+
UI.verbose(ex.backtrace.join("\n"))
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
return if provisioning_profile_mapping.count == 0
|
115
|
+
|
116
|
+
Gym.config[:export_options] ||= {}
|
117
|
+
Gym.config[:export_options][:provisioningProfiles] = provisioning_profile_mapping
|
118
|
+
UI.message("Detected provisioning profile mapping: #{provisioning_profile_mapping}")
|
119
|
+
rescue => ex
|
120
|
+
# We don't want to fail the build if the automatic detection doesn't work
|
121
|
+
# especially since the mapping is optional for pre Xcode 9 setups
|
122
|
+
if Helper.xcode_at_least?("9.0")
|
123
|
+
UI.error("Couldn't automatically detect the provisioning profile mapping")
|
124
|
+
UI.error("Since Xcode 9 you need to provide an explicit mapping of what")
|
125
|
+
UI.error("provisioning profile to use for each target of your app")
|
126
|
+
UI.error(ex)
|
127
|
+
UI.verbose(ex.backtrace.join("\n"))
|
128
|
+
end
|
129
|
+
end
|
130
|
+
# rubocop:enable Style/MultilineBlockChain
|
131
|
+
|
57
132
|
def self.detect_scheme
|
58
133
|
Gym.project.select_scheme
|
59
134
|
end
|
@@ -79,6 +79,10 @@ module Gym
|
|
79
79
|
print "This means, the specified provisioning profile was not created using"
|
80
80
|
print "the specified certificate."
|
81
81
|
print "Run cert and sigh before gym to make sure to have all signing resources ready"
|
82
|
+
when /requires a provisioning profile/
|
83
|
+
print "No provisioning profile provided"
|
84
|
+
print "Make sure to pass a valid provisioning for each required target"
|
85
|
+
print "Check out the docs on how to fix this: https://github.com/fastlane/fastlane/tree/master/gym#export-options"
|
82
86
|
# insert more specific code signing errors here
|
83
87
|
when /Codesign check fails/
|
84
88
|
print "A general code signing error occurred. Make sure you passed a valid"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.44.0
|
4
|
+
version: 2.44.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
@@ -1395,24 +1395,24 @@ metadata:
|
|
1395
1395
|
post_install_message:
|
1396
1396
|
rdoc_options: []
|
1397
1397
|
require_paths:
|
1398
|
-
- fastlane_core/lib
|
1399
|
-
- screengrab/lib
|
1400
|
-
- frameit/lib
|
1401
|
-
- scan/lib
|
1402
1398
|
- cert/lib
|
1399
|
+
- credentials_manager/lib
|
1400
|
+
- deliver/lib
|
1403
1401
|
- fastlane/lib
|
1404
|
-
-
|
1402
|
+
- fastlane_core/lib
|
1403
|
+
- frameit/lib
|
1405
1404
|
- gym/lib
|
1406
|
-
-
|
1407
|
-
- produce/lib
|
1405
|
+
- match/lib
|
1408
1406
|
- pem/lib
|
1409
|
-
- spaceship/lib
|
1410
|
-
- deliver/lib
|
1411
|
-
- precheck/lib
|
1412
|
-
- supply/lib
|
1413
|
-
- credentials_manager/lib
|
1414
1407
|
- pilot/lib
|
1408
|
+
- precheck/lib
|
1409
|
+
- produce/lib
|
1410
|
+
- scan/lib
|
1411
|
+
- screengrab/lib
|
1415
1412
|
- sigh/lib
|
1413
|
+
- snapshot/lib
|
1414
|
+
- spaceship/lib
|
1415
|
+
- supply/lib
|
1416
1416
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1417
1417
|
requirements:
|
1418
1418
|
- - ">="
|
@@ -1420,14 +1420,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
1420
1420
|
version: 2.0.0
|
1421
1421
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1422
1422
|
requirements:
|
1423
|
-
- - "
|
1423
|
+
- - ">="
|
1424
1424
|
- !ruby/object:Gem::Version
|
1425
|
-
version:
|
1425
|
+
version: '0'
|
1426
1426
|
requirements: []
|
1427
1427
|
rubyforge_project:
|
1428
|
-
rubygems_version: 2.
|
1428
|
+
rubygems_version: 2.6.8
|
1429
1429
|
signing_key:
|
1430
1430
|
specification_version: 4
|
1431
1431
|
summary: The easiest way to automate beta deployments and releases for your iOS and
|
1432
1432
|
Android apps
|
1433
1433
|
test_files: []
|
1434
|
+
has_rdoc:
|