fastlane 2.18.3 → 2.19.0.beta.20170222010016
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/deliver/lib/deliver/submit_for_review.rb +1 -36
- data/fastlane/lib/fastlane/actions/frameit.rb +2 -0
- data/fastlane/lib/fastlane/actions/produce.rb +1 -0
- data/fastlane/lib/fastlane/actions/supply.rb +2 -0
- data/fastlane/lib/fastlane/cli_tools_distributor.rb +0 -4
- data/fastlane/lib/fastlane/commands_generator.rb +2 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane_core/lib/fastlane_core.rb +1 -0
- data/fastlane_core/lib/fastlane_core/build_watcher.rb +80 -0
- data/pem/README.md +0 -16
- data/pilot/lib/pilot/build_manager.rb +1 -67
- metadata +17 -18
- data/snapshot/lib/.DS_Store +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f9036c3e8f09d2613f7233cef08fe68106ff01b
|
4
|
+
data.tar.gz: 154bdc8e424c41b2faea3b863bdd9728075b4617
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 08a93c416a1d39e971bae8396f34b1382e846780e5add9447a60822ec6c8d103d8a2067c80a8815a2b2114b917998b834568cabce3feea6b0520e8218a96ae7d
|
7
|
+
data.tar.gz: 7463168cc5e25e2cc2a76c4cdd0673fe1b0c5393fe3cd7d78f06a98f4968cca8d31d6e5dfc2b1a891479e80983d60c5d8c60df027b01a153154a4e31ce9257cf
|
@@ -39,7 +39,7 @@ module Deliver
|
|
39
39
|
end
|
40
40
|
else
|
41
41
|
UI.message("Selecting the latest build...")
|
42
|
-
build = wait_for_build(app)
|
42
|
+
build = FastlaneCore::BuildWatcher.wait_for_build(app, options[:app_platform], sleep_time)
|
43
43
|
end
|
44
44
|
UI.message("Selecting build #{build.train_version} (#{build.build_version})...")
|
45
45
|
|
@@ -48,40 +48,5 @@ module Deliver
|
|
48
48
|
|
49
49
|
UI.success("Successfully selected build")
|
50
50
|
end
|
51
|
-
|
52
|
-
def wait_for_build(app)
|
53
|
-
UI.user_error!("Could not find app with app identifier") unless app
|
54
|
-
|
55
|
-
start = Time.now
|
56
|
-
|
57
|
-
loop do
|
58
|
-
build = find_build(app.latest_version.candidate_builds)
|
59
|
-
return build if build.processing == false
|
60
|
-
|
61
|
-
UI.message("Waiting iTunes Connect processing for build #{build.train_version} (#{build.build_version})... this might take a while...")
|
62
|
-
if (Time.now - start) > (60 * 5)
|
63
|
-
UI.message("")
|
64
|
-
UI.message("You can tweet: \"iTunes Connect #iosprocessingtime #{((Time.now - start) / 60).round} minutes\"")
|
65
|
-
end
|
66
|
-
sleep 30
|
67
|
-
end
|
68
|
-
nil
|
69
|
-
end
|
70
|
-
|
71
|
-
def find_build(candidate_builds)
|
72
|
-
build = nil
|
73
|
-
candidate_builds.each do |b|
|
74
|
-
if !build or b.upload_date > build.upload_date
|
75
|
-
build = b
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
unless build
|
80
|
-
UI.error(candidate_builds)
|
81
|
-
UI.crash!("Could not find build")
|
82
|
-
end
|
83
|
-
|
84
|
-
return build
|
85
|
-
end
|
86
51
|
end
|
87
52
|
end
|
@@ -5,6 +5,8 @@ module Fastlane
|
|
5
5
|
require 'supply'
|
6
6
|
require 'supply/options'
|
7
7
|
|
8
|
+
FastlaneCore::UpdateChecker.start_looking_for_update('supply') unless Helper.is_test?
|
9
|
+
|
8
10
|
all_apk_paths = Actions.lane_context[SharedValues::GRADLE_ALL_APK_OUTPUT_PATHS] || []
|
9
11
|
if all_apk_paths.length > 1
|
10
12
|
params[:apk_paths] ||= all_apk_paths
|
@@ -22,8 +22,6 @@ module Fastlane
|
|
22
22
|
print_slow_fastlane_warning
|
23
23
|
end
|
24
24
|
|
25
|
-
FastlaneCore::UpdateChecker.start_looking_for_update('fastlane')
|
26
|
-
|
27
25
|
ARGV.unshift("spaceship") if ARGV.first == "spaceauth"
|
28
26
|
tool_name = ARGV.first ? ARGV.first.downcase : nil
|
29
27
|
|
@@ -64,8 +62,6 @@ module Fastlane
|
|
64
62
|
require "fastlane/commands_generator"
|
65
63
|
Fastlane::CommandsGenerator.start
|
66
64
|
end
|
67
|
-
ensure
|
68
|
-
FastlaneCore::UpdateChecker.show_update_status('fastlane', Fastlane::VERSION)
|
69
65
|
end
|
70
66
|
|
71
67
|
# Since fastlane also supports the rocket and biceps emoji as executable
|
@@ -30,7 +30,7 @@ module Fastlane
|
|
30
30
|
$stdout = out_channel
|
31
31
|
$stderr = out_channel
|
32
32
|
end
|
33
|
-
|
33
|
+
FastlaneCore::UpdateChecker.start_looking_for_update('fastlane')
|
34
34
|
Fastlane.load_actions
|
35
35
|
FastlaneCore::Swag.stop_loader
|
36
36
|
# do not use "include" as it may be some where in the commandline where "env" is required, therefore explicit index->0
|
@@ -41,6 +41,7 @@ module Fastlane
|
|
41
41
|
end
|
42
42
|
self.new.run
|
43
43
|
ensure
|
44
|
+
FastlaneCore::UpdateChecker.show_update_status('fastlane', Fastlane::VERSION)
|
44
45
|
Fastlane::PluginUpdateManager.show_update_status
|
45
46
|
if FastlaneCore::Globals.capture_output?
|
46
47
|
FastlaneCore::Globals.captured_output = Helper.strip_ansi_colors($stdout.string)
|
@@ -5,6 +5,7 @@ require 'fastlane_core/globals'
|
|
5
5
|
# Ruby monkey-patches - should be before almost all else
|
6
6
|
require 'fastlane_core/core_ext/string'
|
7
7
|
|
8
|
+
require 'fastlane_core/build_watcher'
|
8
9
|
require 'fastlane_core/env'
|
9
10
|
require 'fastlane_core/feature/feature'
|
10
11
|
require 'fastlane_core/features'
|
@@ -0,0 +1,80 @@
|
|
1
|
+
module FastlaneCore
|
2
|
+
class BuildWatcher
|
3
|
+
def self.find_build(app = nil)
|
4
|
+
build = nil
|
5
|
+
app.latest_version.candidate_builds.each do |b|
|
6
|
+
if !build or b.upload_date > build.upload_date
|
7
|
+
build = b
|
8
|
+
end
|
9
|
+
end
|
10
|
+
unless build
|
11
|
+
UI.user_error!("No processing builds available for app #{app.bundle_id}")
|
12
|
+
end
|
13
|
+
return build
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.wait_for_train(app = nil, platform = "ios", sleep_time = 30)
|
17
|
+
loop do
|
18
|
+
sleep(sleep_time)
|
19
|
+
if app.build_trains(platform: platform).count == 0
|
20
|
+
UI.message("New application; waiting for build train to appear on iTunes Connect")
|
21
|
+
else
|
22
|
+
break
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.wait_for_build(app = nil, platform = "ios", sleep_time = 0)
|
28
|
+
start_time = Time.now
|
29
|
+
UI.user_error!("Could not find app with app identifier #{app.bundle_id}") unless app
|
30
|
+
# if this is a new version/app wait for train to show up.
|
31
|
+
if app.build_trains(platform: platform).count == 0
|
32
|
+
self.class.wait_for_train(app, platform, sleep_time)
|
33
|
+
end
|
34
|
+
|
35
|
+
latest_build = nil
|
36
|
+
loop do
|
37
|
+
if sleep_time > 0
|
38
|
+
sleep(sleep_time)
|
39
|
+
else
|
40
|
+
return nil
|
41
|
+
end
|
42
|
+
builds = app.all_processing_builds(platform: platform)
|
43
|
+
break if builds.count == 0
|
44
|
+
latest_build = builds.last
|
45
|
+
UI.message("Waiting for iTunes Connect to finish processing the new build (#{latest_build.train_version} - #{latest_build.build_version})")
|
46
|
+
end
|
47
|
+
|
48
|
+
UI.user_error!("Error receiving the newly uploaded binary, please check iTunes Connect") if latest_build.nil?
|
49
|
+
full_build = nil
|
50
|
+
|
51
|
+
while full_build.nil? || full_build.processing
|
52
|
+
# The build's processing state should go from true to false, and be done. But sometimes it goes true -> false ->
|
53
|
+
# true -> false, where the second true is transient. This causes a spurious failure. Find build by build_version
|
54
|
+
# and ensure it's not processing before proceeding - it had to have already been false before, to get out of the
|
55
|
+
# previous loop.
|
56
|
+
full_build = app.build_trains(platform: platform)[latest_build.train_version].builds.find do |b|
|
57
|
+
b.build_version == latest_build.build_version
|
58
|
+
end
|
59
|
+
if sleep_time > 0
|
60
|
+
UI.message("Waiting for iTunes Connect to finish processing the new build (#{latest_build.train_version} - #{latest_build.build_version})")
|
61
|
+
sleep(sleep_time)
|
62
|
+
else
|
63
|
+
return nil
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
if full_build && !full_build.processing && full_build.valid
|
68
|
+
minutes = ((Time.now - start_time) / 60).round
|
69
|
+
UI.success("Successfully finished processing the build")
|
70
|
+
UI.message("You can now tweet: ")
|
71
|
+
UI.important("iTunes Connect #iosprocessingtime #{minutes} minutes")
|
72
|
+
return full_build
|
73
|
+
else
|
74
|
+
UI.user_error!("Error: Seems like iTunes Connect didn't properly pre-process the binary")
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
private_class_method :wait_for_train
|
79
|
+
end
|
80
|
+
end
|
data/pem/README.md
CHANGED
@@ -120,22 +120,6 @@ Instead, you may verify the file is valid using OpenSSL:
|
|
120
120
|
|
121
121
|
openssl pkcs12 -info -in my.p12
|
122
122
|
|
123
|
-
If you need the `p12` in your keychain, perhaps to test push with an app like [Knuff](https://github.com/KnuffApp/Knuff) or [Pusher](https://github.com/noodlewerk/NWPusher), you can use `openssl` to export the `p12` to `pem` and back to `p12`:
|
124
|
-
|
125
|
-
% openssl pkcs12 -in my.p12 -out my.pem
|
126
|
-
Enter Import Password:
|
127
|
-
<hit enter: the p12 has no password>
|
128
|
-
MAC verified OK
|
129
|
-
Enter PEM pass phrase:
|
130
|
-
<enter a temporary password to encrypt the pem file>
|
131
|
-
|
132
|
-
% openssl pkcs12 -export -in my.pem -out my-with-passphrase.p12
|
133
|
-
Enter pass phrase for temp.pem:
|
134
|
-
<enter the temporary password to decrypt the pem file>
|
135
|
-
|
136
|
-
Enter Export Password:
|
137
|
-
<enter a password for encrypting the new p12 file>
|
138
|
-
|
139
123
|
##### [Like this tool? Be the first to know about updates and new fastlane tools](https://tinyletter.com/krausefx)
|
140
124
|
|
141
125
|
## Environment Variables
|
@@ -31,8 +31,7 @@ module Pilot
|
|
31
31
|
end
|
32
32
|
|
33
33
|
UI.message("If you want to skip waiting for the processing to be finished, use the `skip_waiting_for_build_processing` option")
|
34
|
-
uploaded_build =
|
35
|
-
|
34
|
+
uploaded_build = FastlaneCore::BuildWatcher.wait_for_build(app, platform, config[:wait_processing_interval].to_i)
|
36
35
|
distribute(options, uploaded_build)
|
37
36
|
end
|
38
37
|
|
@@ -124,71 +123,6 @@ module Pilot
|
|
124
123
|
options[:changelog].to_s.length > 0 or options[:beta_app_description].to_s.length > 0 or options[:beta_app_feedback_email].to_s.length > 0
|
125
124
|
end
|
126
125
|
|
127
|
-
# This method will takes care of checking for the processing builds every few seconds
|
128
|
-
# @return [Build] The build that we just uploaded
|
129
|
-
def wait_for_processing_build(options, platform)
|
130
|
-
# the upload date of the new buid
|
131
|
-
# we use it to identify the build
|
132
|
-
start = Time.now
|
133
|
-
wait_processing_interval = config[:wait_processing_interval].to_i
|
134
|
-
latest_build = nil
|
135
|
-
UI.message("Waiting for iTunes Connect to process the new build")
|
136
|
-
must_update_build_info = config[:update_build_info_on_upload]
|
137
|
-
loop do
|
138
|
-
sleep(wait_processing_interval)
|
139
|
-
|
140
|
-
# before we look for processing builds, we need to ensure that there
|
141
|
-
# is a build train for this application; new applications don't
|
142
|
-
# build trains right away, and if we don't do this check, we will
|
143
|
-
# get break out of this loop and then generate an error later when we
|
144
|
-
# have a nil build
|
145
|
-
if app.build_trains(platform: platform).count == 0
|
146
|
-
UI.message("New application; waiting for build train to appear on iTunes Connect")
|
147
|
-
else
|
148
|
-
builds = app.all_processing_builds(platform: platform)
|
149
|
-
break if builds.count == 0
|
150
|
-
latest_build = builds.last
|
151
|
-
|
152
|
-
if latest_build.valid and must_update_build_info
|
153
|
-
# Set the changelog and/or description if necessary
|
154
|
-
if should_update_build_information(options)
|
155
|
-
latest_build.update_build_information!(whats_new: options[:changelog], description: options[:beta_app_description], feedback_email: options[:beta_app_feedback_email])
|
156
|
-
UI.success "Successfully set the changelog and/or description for build"
|
157
|
-
end
|
158
|
-
must_update_build_info = false
|
159
|
-
end
|
160
|
-
|
161
|
-
UI.message("Waiting for iTunes Connect to finish processing the new build (#{latest_build.train_version} - #{latest_build.build_version})")
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
UI.user_error!("Error receiving the newly uploaded binary, please check iTunes Connect") if latest_build.nil?
|
166
|
-
full_build = nil
|
167
|
-
|
168
|
-
while full_build.nil? || full_build.processing
|
169
|
-
# The build's processing state should go from true to false, and be done. But sometimes it goes true -> false ->
|
170
|
-
# true -> false, where the second true is transient. This causes a spurious failure. Find build by build_version
|
171
|
-
# and ensure it's not processing before proceeding - it had to have already been false before, to get out of the
|
172
|
-
# previous loop.
|
173
|
-
full_build = app.build_trains(platform: platform)[latest_build.train_version].builds.find do |b|
|
174
|
-
b.build_version == latest_build.build_version
|
175
|
-
end
|
176
|
-
|
177
|
-
UI.message("Waiting for iTunes Connect to finish processing the new build (#{latest_build.train_version} - #{latest_build.build_version})")
|
178
|
-
sleep(wait_processing_interval)
|
179
|
-
end
|
180
|
-
|
181
|
-
if full_build && !full_build.processing && full_build.valid
|
182
|
-
minutes = ((Time.now - start) / 60).round
|
183
|
-
UI.success("Successfully finished processing the build")
|
184
|
-
UI.message("You can now tweet: ")
|
185
|
-
UI.important("iTunes Connect #iosprocessingtime #{minutes} minutes")
|
186
|
-
return full_build
|
187
|
-
else
|
188
|
-
UI.user_error!("Error: Seems like iTunes Connect didn't properly pre-process the binary")
|
189
|
-
end
|
190
|
-
end
|
191
|
-
|
192
126
|
def distribute_build(uploaded_build, options)
|
193
127
|
UI.message("Distributing new build to testers")
|
194
128
|
|
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.
|
4
|
+
version: 2.19.0.beta.20170222010016
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date: 2017-02-
|
17
|
+
date: 2017-02-22 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: slack-notifier
|
@@ -1023,6 +1023,7 @@ files:
|
|
1023
1023
|
- fastlane_core/README.md
|
1024
1024
|
- fastlane_core/lib/assets/XMLTemplate.xml.erb
|
1025
1025
|
- fastlane_core/lib/fastlane_core.rb
|
1026
|
+
- fastlane_core/lib/fastlane_core/build_watcher.rb
|
1026
1027
|
- fastlane_core/lib/fastlane_core/cert_checker.rb
|
1027
1028
|
- fastlane_core/lib/fastlane_core/command_executor.rb
|
1028
1029
|
- fastlane_core/lib/fastlane_core/configuration/commander_generator.rb
|
@@ -1179,7 +1180,6 @@ files:
|
|
1179
1180
|
- sigh/lib/sigh/resign.rb
|
1180
1181
|
- sigh/lib/sigh/runner.rb
|
1181
1182
|
- snapshot/README.md
|
1182
|
-
- snapshot/lib/.DS_Store
|
1183
1183
|
- snapshot/lib/assets/SnapfileTemplate
|
1184
1184
|
- snapshot/lib/assets/SnapshotHelper.swift
|
1185
1185
|
- snapshot/lib/assets/SnapshotHelper2-3.swift
|
@@ -1296,22 +1296,22 @@ post_install_message:
|
|
1296
1296
|
rdoc_options: []
|
1297
1297
|
require_paths:
|
1298
1298
|
- cert/lib
|
1299
|
-
-
|
1300
|
-
- deliver/lib
|
1301
|
-
- fastlane/lib
|
1302
|
-
- fastlane_core/lib
|
1303
|
-
- frameit/lib
|
1304
|
-
- gym/lib
|
1305
|
-
- match/lib
|
1299
|
+
- scan/lib
|
1306
1300
|
- pem/lib
|
1301
|
+
- deliver/lib
|
1302
|
+
- spaceship/lib
|
1307
1303
|
- pilot/lib
|
1308
|
-
- produce/lib
|
1309
|
-
- scan/lib
|
1310
|
-
- screengrab/lib
|
1311
1304
|
- sigh/lib
|
1312
1305
|
- snapshot/lib
|
1313
|
-
-
|
1306
|
+
- credentials_manager/lib
|
1314
1307
|
- supply/lib
|
1308
|
+
- frameit/lib
|
1309
|
+
- match/lib
|
1310
|
+
- gym/lib
|
1311
|
+
- fastlane_core/lib
|
1312
|
+
- fastlane/lib
|
1313
|
+
- produce/lib
|
1314
|
+
- screengrab/lib
|
1315
1315
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1316
1316
|
requirements:
|
1317
1317
|
- - ">="
|
@@ -1319,15 +1319,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
1319
1319
|
version: 2.0.0
|
1320
1320
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1321
1321
|
requirements:
|
1322
|
-
- - "
|
1322
|
+
- - ">"
|
1323
1323
|
- !ruby/object:Gem::Version
|
1324
|
-
version:
|
1324
|
+
version: 1.3.1
|
1325
1325
|
requirements: []
|
1326
1326
|
rubyforge_project:
|
1327
|
-
rubygems_version: 2.5.
|
1327
|
+
rubygems_version: 2.4.5.2
|
1328
1328
|
signing_key:
|
1329
1329
|
specification_version: 4
|
1330
1330
|
summary: The easiest way to automate beta deployments and releases for your iOS and
|
1331
1331
|
Android apps
|
1332
1332
|
test_files: []
|
1333
|
-
has_rdoc:
|
data/snapshot/lib/.DS_Store
DELETED
Binary file
|