fastlane-plugin-waldo 1.3.0 → 1.5.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c63c5e44aa13f38c39db0a944c6ac663ed82b1c568c839cee17563e5d0f659d2
|
4
|
+
data.tar.gz: 1874dcff9398d14a9cd6b0587fc2e1a3bd129c49bdbf228fb9ee9a3a7d444f39
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cbcbbf1b372bfcdaefcce1c1b211f0bbfa8e0142780abe73a7863006356e321ec18b7b22778a6a82effa4a2f59963c233cc8ba6b08fd8707370bab77b508adc4
|
7
|
+
data.tar.gz: 38fb3a7fb99ca9572cf7a573cd85abe0179e7b21b126e4c23958929d903ed21e83c72527d4859fc51a1feb126b367dc7ce1bc7a2df7d945fc5b6044a2e8d51f0
|
@@ -10,6 +10,7 @@ module Fastlane
|
|
10
10
|
title: "Summary for waldo #{Fastlane::Waldo::VERSION.to_s}")
|
11
11
|
|
12
12
|
Helper::WaldoHelper.upload_build
|
13
|
+
Helper::WaldoHelper.upload_symbols
|
13
14
|
end
|
14
15
|
|
15
16
|
def self.authors
|
@@ -22,6 +23,8 @@ module Fastlane
|
|
22
23
|
apk_path_default = Dir["*.apk"].last || Dir[File.join('app', 'build', 'outputs', 'apk', 'app-release.apk')].last
|
23
24
|
when :ios
|
24
25
|
app_path_default = Dir["*.app"].sort_by { |x| File.mtime(x) }.last
|
26
|
+
# No default dsym_path for now; user must specify it explicitly:
|
27
|
+
# dsym_path_default = (Dir["./**/*.dSYM"] + Dir["./**/*.dSYM.zip"]).sort_by { |x| File.mtime(x) }.last
|
25
28
|
ipa_path_default = Dir["*.ipa"].sort_by { |x| File.mtime(x) }.last
|
26
29
|
end
|
27
30
|
|
@@ -39,6 +42,14 @@ module Fastlane
|
|
39
42
|
default_value: Actions.lane_context[Actions::SharedValues::IPA_OUTPUT_PATH] || ipa_path_default,
|
40
43
|
default_value_dynamic: true,
|
41
44
|
optional: true),
|
45
|
+
FastlaneCore::ConfigItem.new(key: :dsym_path,
|
46
|
+
env_name: 'WALDO_DSYM_PATH',
|
47
|
+
# No default dsym_path for now; user must specify it explicitly:
|
48
|
+
description: 'Path to your dSYM file(s)',
|
49
|
+
# description: 'Path to your dSYM file(s) (optional if you use the _gym_ or _xcodebuild_ action)',
|
50
|
+
# default_value: Actions.lane_context[Actions::SharedValues::DSYM_OUTPUT_PATH] || dsym_path_default,
|
51
|
+
# default_value_dynamic: true,
|
52
|
+
optional: true),
|
42
53
|
# Android-specific
|
43
54
|
FastlaneCore::ConfigItem.new(key: :apk_path,
|
44
55
|
env_name: 'WALDO_APK_PATH',
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'base64'
|
2
|
+
require 'json'
|
2
3
|
require 'net/http'
|
3
4
|
|
4
5
|
module Fastlane
|
@@ -48,12 +49,14 @@ module Fastlane
|
|
48
49
|
|
49
50
|
apk_path = in_params[:apk_path]
|
50
51
|
app_path = in_params[:app_path]
|
52
|
+
dsym_path = in_params[:dsym_path]
|
51
53
|
ipa_path = in_params[:ipa_path]
|
52
54
|
upload_token = in_params[:upload_token]
|
53
55
|
variant_name = in_params[:variant_name]
|
54
56
|
|
55
57
|
apk_path.gsub!("\\ ", ' ') if apk_path
|
56
58
|
app_path.gsub!("\\ ", ' ') if app_path
|
59
|
+
dsym_path.gsub!("\\ ", ' ') if dsym_path
|
57
60
|
ipa_path.gsub!("\\ ", ' ') if ipa_path
|
58
61
|
|
59
62
|
out_params[:apk_path] = apk_path if apk_path
|
@@ -73,6 +76,7 @@ module Fastlane
|
|
73
76
|
out_params[:ipa_path] = ipa_path if ipa_path
|
74
77
|
end
|
75
78
|
|
79
|
+
out_params[:dsym_path] = dsym_path if dsym_path && (app_path || ipa_path)
|
76
80
|
out_params[:upload_token] = upload_token if upload_token && !upload_token.empty?
|
77
81
|
out_params[:variant_name] = variant_name if variant_name
|
78
82
|
|
@@ -246,6 +250,43 @@ module Fastlane
|
|
246
250
|
URI(uri_string)
|
247
251
|
end
|
248
252
|
|
253
|
+
def self.make_symbols_request(uri)
|
254
|
+
if File.file?(@dsym_path)
|
255
|
+
body_path = @dsym_path
|
256
|
+
else
|
257
|
+
dsym_basename = File.basename(@dsym_path)
|
258
|
+
dsym_dirname = File.dirname(@dsym_path)
|
259
|
+
|
260
|
+
body_path = File.join(Dir.tmpdir, "#{dsym_basename}.zip")
|
261
|
+
|
262
|
+
unless zip(src_path: dsym_basename,
|
263
|
+
zip_path: body_path,
|
264
|
+
cd_path: dsym_dirname)
|
265
|
+
return nil
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
request = Net::HTTP::Post.new(uri.request_uri)
|
270
|
+
|
271
|
+
request['Authorization'] = get_authorization
|
272
|
+
request['Transfer-Encoding'] = 'chunked'
|
273
|
+
request['User-Agent'] = get_user_agent
|
274
|
+
|
275
|
+
request.body_stream = WaldoReadIO.new(body_path)
|
276
|
+
request.content_type = 'application/zip'
|
277
|
+
|
278
|
+
request
|
279
|
+
end
|
280
|
+
|
281
|
+
def self.make_symbols_uri
|
282
|
+
uri_string = 'https://api.waldo.io/versions/'
|
283
|
+
|
284
|
+
uri_string += @build_upload_id
|
285
|
+
uri_string += '/symbols'
|
286
|
+
|
287
|
+
URI(uri_string)
|
288
|
+
end
|
289
|
+
|
249
290
|
def self.parse_build_response(response)
|
250
291
|
dump_response(response) if FastlaneCore::Globals.verbose?
|
251
292
|
|
@@ -257,6 +298,10 @@ module Fastlane
|
|
257
298
|
else
|
258
299
|
handle_error("Build failed to upload to Waldo: #{response.code} #{response.message}")
|
259
300
|
end
|
301
|
+
|
302
|
+
result = JSON.parse(response.body)
|
303
|
+
|
304
|
+
@build_upload_id = result["id"]
|
260
305
|
end
|
261
306
|
|
262
307
|
def self.parse_error_response(response)
|
@@ -272,6 +317,19 @@ module Fastlane
|
|
272
317
|
end
|
273
318
|
end
|
274
319
|
|
320
|
+
def self.parse_symbols_response(response)
|
321
|
+
dump_response(response) if FastlaneCore::Globals.verbose?
|
322
|
+
|
323
|
+
case response.code.to_i
|
324
|
+
when 200..299
|
325
|
+
UI.success('Symbols successfully uploaded to Waldo!')
|
326
|
+
when 401
|
327
|
+
UI.error('Token is invalid or missing for symbols upload to Waldo!')
|
328
|
+
else
|
329
|
+
UI.error("Symbols failed to upload to Waldo: #{response.code} #{response.message}")
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
275
333
|
def self.upload_build
|
276
334
|
begin
|
277
335
|
@variant_name ||= Actions.lane_context[Actions::SharedValues::GRADLE_BUILD_TYPE]
|
@@ -282,12 +340,12 @@ module Fastlane
|
|
282
340
|
|
283
341
|
return unless request
|
284
342
|
|
285
|
-
UI.success('Uploading
|
343
|
+
UI.success('Uploading build to Waldo')
|
286
344
|
|
287
345
|
dump_request(request) if FastlaneCore::Globals.verbose?
|
288
346
|
|
289
347
|
Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
|
290
|
-
http.read_timeout = 120
|
348
|
+
http.read_timeout = 120 # 2 minutes
|
291
349
|
|
292
350
|
parse_build_response(http.request(request))
|
293
351
|
end
|
@@ -306,7 +364,7 @@ module Fastlane
|
|
306
364
|
|
307
365
|
request = make_error_request(uri, message)
|
308
366
|
|
309
|
-
UI.error('Uploading error report to Waldo
|
367
|
+
UI.error('Uploading error report to Waldo')
|
310
368
|
|
311
369
|
dump_request(request) if FastlaneCore::Globals.verbose?
|
312
370
|
|
@@ -322,9 +380,38 @@ module Fastlane
|
|
322
380
|
end
|
323
381
|
end
|
324
382
|
|
383
|
+
def self.upload_symbols
|
384
|
+
begin
|
385
|
+
return unless @dsym_path
|
386
|
+
|
387
|
+
uri = make_symbols_uri
|
388
|
+
|
389
|
+
request = make_symbols_request(uri)
|
390
|
+
|
391
|
+
return unless request
|
392
|
+
|
393
|
+
UI.success('Uploading symbols to Waldo')
|
394
|
+
|
395
|
+
dump_request(request) if FastlaneCore::Globals.verbose?
|
396
|
+
|
397
|
+
Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
|
398
|
+
http.read_timeout = 120 # 2 minutes
|
399
|
+
|
400
|
+
parse_symbols_response(http.request(request))
|
401
|
+
end
|
402
|
+
rescue Net::ReadTimeout => exc
|
403
|
+
handle_error('Symbols upload to Waldo timed out!')
|
404
|
+
rescue => exc
|
405
|
+
handle_error("Something went wrong uploading symbols to Waldo: #{exc.inspect.to_s}")
|
406
|
+
ensure
|
407
|
+
request.body_stream.close if request && request.body_stream
|
408
|
+
end
|
409
|
+
end
|
410
|
+
|
325
411
|
def self.validate_parameters(params)
|
326
412
|
@apk_path = params[:apk_path]
|
327
413
|
@app_path = params[:app_path]
|
414
|
+
@dsym_path = params[:dsym_path]
|
328
415
|
@ipa_path = params[:ipa_path]
|
329
416
|
@upload_token = params[:upload_token]
|
330
417
|
@variant_name = params[:variant_name]
|
@@ -386,6 +473,20 @@ module Fastlane
|
|
386
473
|
return false
|
387
474
|
end
|
388
475
|
end
|
476
|
+
|
477
|
+
if @dsym_path
|
478
|
+
unless File.exist?(@dsym_path)
|
479
|
+
handle_error("Unable to find symbols at path '#{@dsym_path.to_s}'")
|
480
|
+
|
481
|
+
return false
|
482
|
+
end
|
483
|
+
|
484
|
+
unless (File.directory?(@dsym_path) || File.file?(@dsym_path)) && File.readable?(@dsym_path)
|
485
|
+
handle_error("Unable to read symbols at path '#{@dsym_path.to_s}'")
|
486
|
+
|
487
|
+
return false
|
488
|
+
end
|
489
|
+
end
|
389
490
|
else
|
390
491
|
handle_error("Unsupported platform: '#{get_platform.to_s}'")
|
391
492
|
|
@@ -416,7 +517,7 @@ module Fastlane
|
|
416
517
|
puts "#{cmd} => #{result}" if FastlaneCore::Globals.verbose?
|
417
518
|
|
418
519
|
unless result.empty?
|
419
|
-
handle_error("Unable to zip
|
520
|
+
handle_error("Unable to zip folder at path '#{src_path.to_s}' into '#{zip_path.to_s}'")
|
420
521
|
|
421
522
|
return false
|
422
523
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-waldo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- J. G. Pusey
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -97,8 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: '0'
|
99
99
|
requirements: []
|
100
|
-
|
101
|
-
rubygems_version: 2.5.2.3
|
100
|
+
rubygems_version: 3.0.6
|
102
101
|
signing_key:
|
103
102
|
specification_version: 4
|
104
103
|
summary: Upload build to Waldo
|