fastlane 2.114.0.beta.20190115200110 → 2.114.0.beta.20190116200018
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/fastlane/lib/fastlane/actions/create_pull_request.rb +1 -1
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +26 -5
- data/fastlane/lib/fastlane/actions/increment_version_number.rb +13 -8
- data/fastlane/lib/fastlane/actions/prompt.rb +12 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane_core/lib/fastlane_core/keychain_importer.rb +24 -18
- data/scan/lib/scan/options.rb +7 -0
- data/scan/lib/scan/runner.rb +5 -1
- data/sigh/lib/sigh/resign.rb +19 -3
- data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +3 -1
- data/supply/lib/supply/options.rb +11 -1
- data/supply/lib/supply/uploader.rb +2 -0
- metadata +13 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8823faa01f6b91b8f1d75874a92e31c24e5baf7b
|
4
|
+
data.tar.gz: 798b9258cdccc86dd157343f01948b7b64329a01
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb89b5429909549a65ad93a6f2192de69a1d33834ffb3260d413adde31da4e1b072a72953a4b35938b97c19982d0afdef08e04bcdc98c9bfc2931abf8e341107
|
7
|
+
data.tar.gz: 7f60cd65995378cb001435f2a6202f45ce800b52d4607fe0b738b7be4aa45741d7100edf57537db568c1cccba18953612d0afae6328916840728d915a54cf722
|
@@ -25,6 +25,7 @@ module Fastlane
|
|
25
25
|
build_number = params[:build_number]
|
26
26
|
platform = params[:platform]
|
27
27
|
output_directory = params[:output_directory]
|
28
|
+
min_version = Gem::Version.new(params[:min_version]) if params[:min_version]
|
28
29
|
|
29
30
|
# Set version if it is latest
|
30
31
|
if version == 'latest'
|
@@ -51,21 +52,35 @@ module Fastlane
|
|
51
52
|
UI.message(message.join(" "))
|
52
53
|
|
53
54
|
app.tunes_all_build_trains(platform: platform).each do |train|
|
54
|
-
|
55
|
+
message = []
|
56
|
+
message << "Found train (version): #{train.version_string}"
|
57
|
+
message << ", comparing to supplied version: #{version}" if version
|
58
|
+
UI.verbose(message.join(" "))
|
59
|
+
|
55
60
|
if version && version != train.version_string
|
56
61
|
UI.verbose("Version #{version} doesn't match: #{train.version_string}")
|
57
62
|
next
|
58
63
|
end
|
64
|
+
|
65
|
+
if min_version && min_version > Gem::Version.new(train.version_string)
|
66
|
+
UI.verbose("Min version #{min_version} not reached: #{train.version_string}")
|
67
|
+
next
|
68
|
+
end
|
69
|
+
|
59
70
|
app.tunes_all_builds_for_train(train: train.version_string, platform: platform).each do |build|
|
60
|
-
|
71
|
+
message = []
|
72
|
+
message << "Found build version: #{build.build_version}"
|
73
|
+
message << ", comparing to supplied build_number: #{build_number}" if build_number
|
74
|
+
UI.verbose(message.join(" "))
|
75
|
+
|
61
76
|
if build_number && build.build_version != build_number
|
62
77
|
UI.verbose("build_version: #{build.build_version} doesn't match: #{build_number}")
|
63
78
|
next
|
64
79
|
end
|
65
80
|
|
66
81
|
begin
|
67
|
-
#
|
68
|
-
|
82
|
+
UI.verbose("Build_version: #{build.build_version} matches #{build_number}, grabbing dsym_url") if build_number
|
83
|
+
|
69
84
|
build_details = app.tunes_build_details(train: train.version_string, build_number: build.build_version, platform: platform)
|
70
85
|
download_url = build_details.dsym_url
|
71
86
|
UI.verbose("dsym_url: #{download_url}")
|
@@ -207,6 +222,11 @@ module Fastlane
|
|
207
222
|
env_name: "DOWNLOAD_DSYMS_BUILD_NUMBER",
|
208
223
|
description: "The app build_number for dSYMs you wish to download",
|
209
224
|
optional: true),
|
225
|
+
FastlaneCore::ConfigItem.new(key: :min_version,
|
226
|
+
short_option: "-m",
|
227
|
+
env_name: "DOWNLOAD_DSYMS_MIN_VERSION",
|
228
|
+
description: "The minimum app version for dSYMs you wish to download",
|
229
|
+
optional: true),
|
210
230
|
FastlaneCore::ConfigItem.new(key: :output_directory,
|
211
231
|
short_option: "-s",
|
212
232
|
env_name: "DOWNLOAD_DSYMS_OUTPUT_DIRECTORY",
|
@@ -236,7 +256,8 @@ module Fastlane
|
|
236
256
|
def self.example_code
|
237
257
|
[
|
238
258
|
'download_dsyms',
|
239
|
-
'download_dsyms(version: "1.0.0", build_number: "345")'
|
259
|
+
'download_dsyms(version: "1.0.0", build_number: "345")',
|
260
|
+
'download_dsyms(min_version: "1.2.3")'
|
240
261
|
]
|
241
262
|
end
|
242
263
|
|
@@ -23,20 +23,25 @@ module Fastlane
|
|
23
23
|
'&&'
|
24
24
|
].join(' ')
|
25
25
|
|
26
|
-
|
26
|
+
begin
|
27
|
+
current_version = Actions
|
28
|
+
.sh("#{command_prefix} agvtool what-marketing-version -terse1", log: FastlaneCore::Globals.verbose?)
|
29
|
+
.split("\n")
|
30
|
+
.last
|
31
|
+
.strip
|
32
|
+
rescue
|
33
|
+
current_version = ''
|
34
|
+
end
|
27
35
|
|
36
|
+
version_regex = /^\d+\.\d+\.\d+$/
|
28
37
|
if params[:version_number]
|
29
|
-
UI.verbose("Your current version (#{current_version}) does not respect the format A.B.C") unless current_version =~
|
38
|
+
UI.verbose("Your current version (#{current_version}) does not respect the format A.B.C") unless current_version =~ version_regex
|
30
39
|
|
31
40
|
# Specific version
|
32
41
|
next_version_number = params[:version_number]
|
33
42
|
else
|
34
|
-
|
35
|
-
|
36
|
-
else
|
37
|
-
UI.user_error!("Your current version (#{current_version}) does not respect the format A.B.C") unless current_version =~ /\d+.\d+.\d+/
|
38
|
-
version_array = current_version.split(".").map(&:to_i)
|
39
|
-
end
|
43
|
+
UI.user_error!("Your current version (#{current_version}) does not respect the format A.B.C") unless current_version =~ version_regex
|
44
|
+
version_array = current_version.split(".").map(&:to_i)
|
40
45
|
|
41
46
|
case params[:bump_type]
|
42
47
|
when "patch"
|
@@ -15,7 +15,18 @@ module Fastlane
|
|
15
15
|
# Multi line
|
16
16
|
end_tag = params[:multi_line_end_keyword]
|
17
17
|
UI.important("Submit inputs using \"#{params[:multi_line_end_keyword]}\"")
|
18
|
-
user_input =
|
18
|
+
user_input = ""
|
19
|
+
loop do
|
20
|
+
line = STDIN.gets
|
21
|
+
end_tag_index = line.index(end_tag)
|
22
|
+
if end_tag_index.nil?
|
23
|
+
user_input << line
|
24
|
+
else
|
25
|
+
user_input << line.slice(0, end_tag_index)
|
26
|
+
user_input = user_input.strip
|
27
|
+
break
|
28
|
+
end
|
29
|
+
end
|
19
30
|
else
|
20
31
|
# Standard one line input
|
21
32
|
if params[:secure_text]
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Fastlane
|
2
|
-
VERSION = '2.114.0.beta.
|
2
|
+
VERSION = '2.114.0.beta.20190116200018'.freeze
|
3
3
|
DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
|
4
4
|
MINIMUM_XCODE_RELEASE = "7.0".freeze
|
5
5
|
RUBOCOP_REQUIREMENT = '0.49.1'.freeze
|
@@ -10,7 +10,7 @@ module FastlaneCore
|
|
10
10
|
command << " -P #{certificate_password.shellescape}"
|
11
11
|
command << " -T /usr/bin/codesign" # to not be asked for permission when running a tool like `gym` (before Sierra)
|
12
12
|
command << " -T /usr/bin/security"
|
13
|
-
command << "
|
13
|
+
command << " 1> /dev/null" unless output
|
14
14
|
|
15
15
|
Helper.backticks(command, print: output)
|
16
16
|
|
@@ -19,31 +19,37 @@ module FastlaneCore
|
|
19
19
|
if Helper.backticks('security -h | grep set-key-partition-list', print: false).length > 0
|
20
20
|
command = "security set-key-partition-list"
|
21
21
|
command << " -S apple-tool:,apple:"
|
22
|
-
command << " -l 'Imported Private Key'"
|
23
22
|
command << " -k #{keychain_password.to_s.shellescape}"
|
24
23
|
command << " #{keychain_path.shellescape}"
|
25
|
-
command << "
|
24
|
+
command << " 1> /dev/null" # always disable stdout. This can be very verbose, and leak potentially sensitive info
|
25
|
+
|
26
|
+
# Showing loading indicator as this can take some time if a lot of keys installed
|
27
|
+
Helper.show_loading_indicator("Setting key partition list... (this can take a minute if there are a lot of keys installed)")
|
26
28
|
|
27
29
|
UI.command(command) if output
|
28
30
|
Open3.popen3(command) do |stdin, stdout, stderr, thrd|
|
29
|
-
if output
|
30
|
-
Helper.show_loading_indicator("Importing keys...")
|
31
|
-
UI.command(command)
|
32
|
-
UI.command_output(stdout.read)
|
33
|
-
Helper.hide_loading_indicator
|
34
|
-
end
|
35
|
-
|
36
31
|
unless thrd.value.success?
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
32
|
+
err = stderr.read.to_s.strip
|
33
|
+
|
34
|
+
# Inform user when no/wrong password was used as its needed to prevent UI permission popup from Xcode when signing
|
35
|
+
if err.include?("SecKeychainItemSetAccessWithPassword")
|
36
|
+
UI.error("")
|
37
|
+
UI.error("Could not configure imported keychain item (certificate) to prevent UI permission popup when code signing\n" \
|
38
|
+
"Check if you supplied the correct `keychain_password` for keychain: `#{keychain_path}`\n" \
|
39
|
+
"#{err}")
|
40
|
+
UI.error("")
|
41
|
+
UI.error("Please look at the following docs to see how to set a keychain password:")
|
42
|
+
UI.error(" - https://docs.fastlane.tools/actions/sync_code_signing")
|
43
|
+
UI.error(" - https://docs.fastlane.tools/actions/get_certificates")
|
44
|
+
else
|
45
|
+
UI.error(err)
|
46
|
+
end
|
45
47
|
end
|
46
48
|
end
|
49
|
+
|
50
|
+
# Hiding after Open3 finishes
|
51
|
+
Helper.hide_loading_indicator
|
52
|
+
|
47
53
|
end
|
48
54
|
end
|
49
55
|
end
|
data/scan/lib/scan/options.rb
CHANGED
@@ -69,6 +69,13 @@ module Scan
|
|
69
69
|
type: Boolean,
|
70
70
|
optional: true),
|
71
71
|
|
72
|
+
# reset simulator
|
73
|
+
FastlaneCore::ConfigItem.new(key: :reset_simulator,
|
74
|
+
env_name: 'SCAN_RESET_SIMULATOR',
|
75
|
+
description: "Enabling this option will automatically erase the simulator before running the application",
|
76
|
+
default_value: false,
|
77
|
+
type: Boolean),
|
78
|
+
|
72
79
|
# reinstall app
|
73
80
|
FastlaneCore::ConfigItem.new(key: :reinstall_app,
|
74
81
|
env_name: 'SCAN_REINSTALL_APP',
|
data/scan/lib/scan/runner.rb
CHANGED
@@ -40,7 +40,11 @@ module Scan
|
|
40
40
|
]
|
41
41
|
exit_status = 0
|
42
42
|
|
43
|
-
if Scan.config[:
|
43
|
+
if Scan.config[:reset_simulator]
|
44
|
+
Scan.devices.each do |device|
|
45
|
+
FastlaneCore::Simulator.reset(udid: device.udid)
|
46
|
+
end
|
47
|
+
elsif Scan.config[:reinstall_app]
|
44
48
|
app_identifier = Scan.config[:app_identifier]
|
45
49
|
app_identifier ||= UI.input("App Identifier: ")
|
46
50
|
|
data/sigh/lib/sigh/resign.rb
CHANGED
@@ -21,6 +21,19 @@ module Sigh
|
|
21
21
|
|
22
22
|
def resign(ipa, signing_identity, provisioning_profiles, entitlements, version, display_name, short_version, bundle_version, new_bundle_id, use_app_entitlements, keychain_path)
|
23
23
|
resign_path = find_resign_path
|
24
|
+
|
25
|
+
if keychain_path
|
26
|
+
keychain_path_absolute = File.expand_path(keychain_path)
|
27
|
+
|
28
|
+
current_keychains = `security list-keychains`
|
29
|
+
current_keychains.delete!("\n")
|
30
|
+
|
31
|
+
unless current_keychains.include?(keychain_path_absolute)
|
32
|
+
previous_keychains = current_keychains
|
33
|
+
`security list-keychains -s #{current_keychains} '#{keychain_path_absolute}'`
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
24
37
|
signing_identity = find_signing_identity(signing_identity)
|
25
38
|
|
26
39
|
unless provisioning_profiles.kind_of?(Enumerable)
|
@@ -68,6 +81,8 @@ module Sigh
|
|
68
81
|
UI.error("Something went wrong while code signing #{ipa}")
|
69
82
|
false
|
70
83
|
end
|
84
|
+
ensure
|
85
|
+
`security list-keychains -s #{previous_keychains}` if previous_keychains
|
71
86
|
end
|
72
87
|
|
73
88
|
def get_inputs(options, args)
|
@@ -103,9 +118,10 @@ module Sigh
|
|
103
118
|
end
|
104
119
|
|
105
120
|
def find_signing_identity(signing_identity)
|
106
|
-
|
107
|
-
|
108
|
-
|
121
|
+
signing_identity_input = signing_identity
|
122
|
+
until (signing_identity = sha1_for_signing_identity(signing_identity_input))
|
123
|
+
UI.error("Couldn't find signing identity '#{signing_identity_input}'.")
|
124
|
+
signing_identity_input = ask_for_signing_identity
|
109
125
|
end
|
110
126
|
|
111
127
|
signing_identity
|
@@ -42,7 +42,9 @@ module Snapshot
|
|
42
42
|
|
43
43
|
launch_arguments = Array(snapshot_config[:launch_arguments])
|
44
44
|
# if more than 1 set of arguments, use a tuple with an index
|
45
|
-
if launch_arguments.count ==
|
45
|
+
if launch_arguments.count == 0
|
46
|
+
@launch_args_set = [[""]]
|
47
|
+
elsif launch_arguments.count == 1
|
46
48
|
@launch_args_set = [launch_arguments]
|
47
49
|
else
|
48
50
|
@launch_args_set = launch_arguments.map.with_index { |e, i| [i, e] }
|
@@ -228,7 +228,17 @@ module Supply
|
|
228
228
|
optional: true,
|
229
229
|
description: "When promoting to a new track, deactivate the binary in the origin track",
|
230
230
|
is_string: false,
|
231
|
-
default_value: true)
|
231
|
+
default_value: true),
|
232
|
+
FastlaneCore::ConfigItem.new(key: :version_codes_to_retain,
|
233
|
+
optional: true,
|
234
|
+
type: Array,
|
235
|
+
description: "An array of version codes to retain when publishing a new APK",
|
236
|
+
verify_block: proc do |version_codes|
|
237
|
+
UI.user_error!("Could not evaluate array from '#{version_codes}'") unless version_codes.kind_of?(Array)
|
238
|
+
version_codes.each do |version_code|
|
239
|
+
UI.user_error!("Version code '#{version_code}' is not an integer") unless version_code.kind_of?(Integer)
|
240
|
+
end
|
241
|
+
end)
|
232
242
|
]
|
233
243
|
end
|
234
244
|
# rubocop:enable Metrics/PerceivedComplexity
|
@@ -28,6 +28,8 @@ module Supply
|
|
28
28
|
apk_version_codes.concat(upload_bundles) unless Supply.config[:skip_upload_aab]
|
29
29
|
upload_mapping(apk_version_codes)
|
30
30
|
|
31
|
+
apk_version_codes.concat(Supply.config[:version_codes_to_retain]) if Supply.config[:version_codes_to_retain]
|
32
|
+
|
31
33
|
# Only update tracks if we have version codes
|
32
34
|
# Updating a track with empty version codes can completely clear out a track
|
33
35
|
update_track(apk_version_codes) unless apk_version_codes.empty?
|
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.114.0.beta.
|
4
|
+
version: 2.114.0.beta.20190116200018
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Natchev
|
@@ -27,7 +27,7 @@ authors:
|
|
27
27
|
autorequire:
|
28
28
|
bindir: bin
|
29
29
|
cert_chain: []
|
30
|
-
date: 2019-01-
|
30
|
+
date: 2019-01-16 00:00:00.000000000 Z
|
31
31
|
dependencies:
|
32
32
|
- !ruby/object:Gem::Dependency
|
33
33
|
name: slack-notifier
|
@@ -1683,23 +1683,23 @@ post_install_message:
|
|
1683
1683
|
rdoc_options: []
|
1684
1684
|
require_paths:
|
1685
1685
|
- frameit/lib
|
1686
|
-
-
|
1686
|
+
- pilot/lib
|
1687
|
+
- fastlane/lib
|
1688
|
+
- snapshot/lib
|
1687
1689
|
- gym/lib
|
1688
|
-
-
|
1690
|
+
- precheck/lib
|
1691
|
+
- scan/lib
|
1692
|
+
- pem/lib
|
1689
1693
|
- produce/lib
|
1690
|
-
-
|
1691
|
-
- sigh/lib
|
1692
|
-
- screengrab/lib
|
1693
|
-
- pilot/lib
|
1694
|
+
- spaceship/lib
|
1694
1695
|
- fastlane_core/lib
|
1695
1696
|
- supply/lib
|
1697
|
+
- deliver/lib
|
1698
|
+
- credentials_manager/lib
|
1696
1699
|
- match/lib
|
1697
|
-
-
|
1700
|
+
- screengrab/lib
|
1701
|
+
- sigh/lib
|
1698
1702
|
- cert/lib
|
1699
|
-
- scan/lib
|
1700
|
-
- spaceship/lib
|
1701
|
-
- pem/lib
|
1702
|
-
- credentials_manager/lib
|
1703
1703
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1704
1704
|
requirements:
|
1705
1705
|
- - ">="
|