fastlane-plugin-firebase_app_distribution 0.9.1 → 0.10.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 +4 -4
- data/lib/fastlane/plugin/firebase_app_distribution/actions/firebase_app_distribution_action.rb +103 -45
- data/lib/fastlane/plugin/firebase_app_distribution/actions/firebase_app_distribution_add_testers_action.rb +3 -1
- data/lib/fastlane/plugin/firebase_app_distribution/actions/firebase_app_distribution_create_group_action.rb +3 -1
- data/lib/fastlane/plugin/firebase_app_distribution/actions/firebase_app_distribution_delete_group_action.rb +3 -1
- data/lib/fastlane/plugin/firebase_app_distribution/actions/firebase_app_distribution_get_latest_release.rb +3 -1
- data/lib/fastlane/plugin/firebase_app_distribution/actions/firebase_app_distribution_get_udids.rb +2 -1
- data/lib/fastlane/plugin/firebase_app_distribution/actions/firebase_app_distribution_remove_testers_action.rb +3 -1
- data/lib/fastlane/plugin/firebase_app_distribution/helper/firebase_app_distribution_apis.rb +48 -0
- data/lib/fastlane/plugin/firebase_app_distribution/helper/firebase_app_distribution_auth_client.rb +1 -0
- data/lib/fastlane/plugin/firebase_app_distribution/helper/firebase_app_distribution_error_message.rb +2 -0
- data/lib/fastlane/plugin/firebase_app_distribution/helper/firebase_app_distribution_helper.rb +4 -1
- data/lib/fastlane/plugin/firebase_app_distribution/version.rb +1 -1
- metadata +4 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b85c6c60b76c751c0f4f5ca2611bd6735b5540b1525e600dad266b354bcc2e7
|
4
|
+
data.tar.gz: dbee1fc079ed0d7c8f1b50aec4cc22339e7046cf97b100576564797afa440e48
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5fd6c96184db82f9d38dc5495b2c8adcd9b42326f45420afcf50b9db66064dd7c07228d694d349b0c1ee3e82782cc8fe76ec5e0889841574f3c12ecaeff89362
|
7
|
+
data.tar.gz: 3f5e0aafc6c0b09ae3722f7fd65522009470c70cad2bd115fd061f2c38a63522eec6b77aa036df9e21cc30b6704134fe593ec132dee5026e65a50d29366f4d91
|
data/lib/fastlane/plugin/firebase_app_distribution/actions/firebase_app_distribution_action.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
require 'fastlane/action'
|
2
|
+
require 'fastlane_core'
|
2
3
|
require 'open3'
|
3
4
|
require 'shellwords'
|
4
5
|
require 'googleauth'
|
5
|
-
|
6
|
+
require_relative '../helper/firebase_app_distribution_apis'
|
6
7
|
require_relative '../helper/firebase_app_distribution_helper'
|
7
8
|
require_relative '../helper/firebase_app_distribution_error_message'
|
8
9
|
require_relative '../helper/firebase_app_distribution_auth_client'
|
@@ -34,8 +35,8 @@ module Fastlane
|
|
34
35
|
timeout = get_upload_timeout(params)
|
35
36
|
|
36
37
|
binary_path = get_binary_path(platform, params)
|
37
|
-
UI.user_error!("Couldn't
|
38
|
-
UI.user_error!("Couldn't find binary at path #{binary_path}.") unless File.exist?(binary_path)
|
38
|
+
UI.user_error!("Couldn't determine path for #{platform} binary.") if binary_path.nil?
|
39
|
+
UI.user_error!("Couldn't find #{platform} binary at path #{binary_path}.") unless File.exist?(binary_path)
|
39
40
|
binary_type = binary_type_from_path(binary_path)
|
40
41
|
|
41
42
|
# TODO(lkellogg): This sets the send timeout for all POST requests made by the client, but
|
@@ -56,7 +57,7 @@ module Fastlane
|
|
56
57
|
|
57
58
|
binary_type = binary_type_from_path(binary_path)
|
58
59
|
UI.message("📡 Uploading the #{binary_type}.")
|
59
|
-
operation = upload_binary(app_name, binary_path,
|
60
|
+
operation = upload_binary(client, app_name, binary_path, binary_type, timeout)
|
60
61
|
UI.message("🕵️ Validating upload…")
|
61
62
|
release = poll_upload_release_operation(client, operation, binary_type)
|
62
63
|
|
@@ -87,11 +88,12 @@ module Fastlane
|
|
87
88
|
test_devices =
|
88
89
|
get_value_from_value_or_file(params[:test_devices], params[:test_devices_file])
|
89
90
|
if present?(test_devices)
|
90
|
-
|
91
|
+
test_cases =
|
92
|
+
string_to_array(get_value_from_value_or_file(params[:test_case_ids], params[:test_case_ids_file]))&.map { |id| "#{app_name}/testCases/#{id}" }
|
91
93
|
test_password = test_password_from_params(params)
|
92
|
-
|
94
|
+
release_tests = test_release(alpha_client, release, test_devices, test_cases, params[:test_username], test_password, params[:test_username_resource], params[:test_password_resource])
|
93
95
|
unless params[:test_non_blocking]
|
94
|
-
poll_test_finished(alpha_client,
|
96
|
+
poll_test_finished(alpha_client, release_tests)
|
95
97
|
end
|
96
98
|
end
|
97
99
|
|
@@ -158,11 +160,14 @@ module Fastlane
|
|
158
160
|
# the same lane
|
159
161
|
return nil if lane_platform == :android
|
160
162
|
|
163
|
+
# rubocop:disable Require/MissingRequireStatement
|
161
164
|
Actions.lane_context[SharedValues::XCODEBUILD_ARCHIVE]
|
165
|
+
# rubocop:enable Require/MissingRequireStatement
|
162
166
|
end
|
163
167
|
|
164
168
|
def self.lane_platform
|
165
|
-
|
169
|
+
# to_sym shouldn't be necessary, but possibly fixes #376
|
170
|
+
Actions.lane_context[Actions::SharedValues::PLATFORM_NAME]&.to_sym
|
166
171
|
end
|
167
172
|
|
168
173
|
def self.platform_from_app_id(app_id)
|
@@ -173,6 +178,7 @@ module Fastlane
|
|
173
178
|
end
|
174
179
|
end
|
175
180
|
|
181
|
+
# rubocop:disable Require/MissingRequireStatement
|
176
182
|
def self.get_binary_path(platform, params)
|
177
183
|
if platform == :ios
|
178
184
|
return params[:ipa_path] ||
|
@@ -193,7 +199,11 @@ module Fastlane
|
|
193
199
|
Dir["*.apk"].last ||
|
194
200
|
Dir[File.join("app", "build", "outputs", "apk", "release", "app-release.apk")].last
|
195
201
|
end
|
202
|
+
|
203
|
+
UI.error("Unable to determine binary path for unsupported platform #{platform}.")
|
204
|
+
nil
|
196
205
|
end
|
206
|
+
# rubocop:enable Require/MissingRequireStatement
|
197
207
|
|
198
208
|
def self.get_upload_timeout(params)
|
199
209
|
if params[:upload_timeout]
|
@@ -232,7 +242,9 @@ module Fastlane
|
|
232
242
|
def self.release_notes(params)
|
233
243
|
release_notes_param =
|
234
244
|
get_value_from_value_or_file(params[:release_notes], params[:release_notes_file])
|
245
|
+
# rubocop:disable Require/MissingRequireStatement
|
235
246
|
release_notes_param || Actions.lane_context[SharedValues::FL_CHANGELOG]
|
247
|
+
# rubocop:enable Require/MissingRequireStatement
|
236
248
|
end
|
237
249
|
|
238
250
|
def self.poll_upload_release_operation(client, operation, binary_type)
|
@@ -268,7 +280,7 @@ module Fastlane
|
|
268
280
|
extract_release(operation)
|
269
281
|
end
|
270
282
|
|
271
|
-
def self.upload_binary(app_name, binary_path,
|
283
|
+
def self.upload_binary(client, app_name, binary_path, binary_type, timeout)
|
272
284
|
options = Google::Apis::RequestOptions.new
|
273
285
|
options.max_elapsed_time = timeout # includes retries (default = no retries)
|
274
286
|
options.header = {
|
@@ -282,12 +294,21 @@ module Fastlane
|
|
282
294
|
# standard http call instead and convert it to a long running object
|
283
295
|
# https://github.com/googleapis/google-api-ruby-client/blob/main/generated/google-apis-firebaseappdistribution_v1/lib/google/apis/firebaseappdistribution_v1/service.rb#L79
|
284
296
|
# TODO(kbolay): Prefer client.upload_medium
|
285
|
-
response =
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
297
|
+
response = begin
|
298
|
+
client.http(
|
299
|
+
:post,
|
300
|
+
"https://firebaseappdistribution.googleapis.com/upload/v1/#{app_name}/releases:upload",
|
301
|
+
body: File.open(binary_path, 'rb'),
|
302
|
+
options: options
|
303
|
+
)
|
304
|
+
rescue Google::Apis::Error => err
|
305
|
+
case err.status_code.to_i
|
306
|
+
when 403
|
307
|
+
UI.crash!(ErrorMessage::PERMISSION_DENIED_ERROR)
|
308
|
+
else
|
309
|
+
UI.crash!("#{ErrorMessage.upload_binary_error(binary_type)} (#{err}, status_code: #{err.status_code})")
|
310
|
+
end
|
311
|
+
end
|
291
312
|
|
292
313
|
Google::Apis::FirebaseappdistributionV1::GoogleLongrunningOperation.from_json(response)
|
293
314
|
end
|
@@ -339,7 +360,10 @@ module Fastlane
|
|
339
360
|
end
|
340
361
|
end
|
341
362
|
|
342
|
-
def self.test_release(alpha_client, release, test_devices, username = nil, password = nil, username_resource = nil, password_resource = nil)
|
363
|
+
def self.test_release(alpha_client, release, test_devices, test_cases, username = nil, password = nil, username_resource = nil, password_resource = nil)
|
364
|
+
if present?(test_cases) && (!username_resource.nil? || !password_resource.nil?)
|
365
|
+
UI.user_error!("Password and username resource names are not supported for the testing agent.")
|
366
|
+
end
|
343
367
|
if username_resource.nil? ^ password_resource.nil?
|
344
368
|
UI.user_error!("Username and password resource names for automated tests need to be specified together.")
|
345
369
|
end
|
@@ -369,7 +393,7 @@ module Fastlane
|
|
369
393
|
end
|
370
394
|
end
|
371
395
|
|
372
|
-
device_executions = string_to_array(test_devices,
|
396
|
+
device_executions = string_to_array(test_devices, /[;\n]/).map do |td_string|
|
373
397
|
td_hash = parse_test_device_string(td_string)
|
374
398
|
Google::Apis::FirebaseappdistributionV1alpha::GoogleFirebaseAppdistroV1alphaDeviceExecution.new(
|
375
399
|
device: Google::Apis::FirebaseappdistributionV1alpha::GoogleFirebaseAppdistroV1alphaTestDevice.new(
|
@@ -381,37 +405,64 @@ module Fastlane
|
|
381
405
|
)
|
382
406
|
end
|
383
407
|
|
408
|
+
UI.message("🤖 Starting automated tests. Note: This feature is in beta.")
|
409
|
+
release_tests = []
|
410
|
+
if present?(test_cases)
|
411
|
+
test_cases.each do |tc|
|
412
|
+
release_tests.push(create_release_test(alpha_client, release.name, device_executions, login_credential, tc))
|
413
|
+
end
|
414
|
+
else
|
415
|
+
release_tests.push(create_release_test(alpha_client, release.name, device_executions, login_credential))
|
416
|
+
end
|
417
|
+
release_tests
|
418
|
+
end
|
419
|
+
|
420
|
+
def self.create_release_test(alpha_client, release_name, device_executions, login_credential, test_case_name = nil)
|
384
421
|
release_test =
|
385
422
|
Google::Apis::FirebaseappdistributionV1alpha::GoogleFirebaseAppdistroV1alphaReleaseTest.new(
|
423
|
+
device_executions: device_executions,
|
386
424
|
login_credential: login_credential,
|
387
|
-
|
425
|
+
test_case: test_case_name
|
388
426
|
)
|
389
|
-
alpha_client.create_project_app_release_test(
|
427
|
+
alpha_client.create_project_app_release_test(release_name, release_test)
|
390
428
|
rescue Google::Apis::Error => err
|
391
|
-
|
429
|
+
case err.status_code.to_i
|
430
|
+
when 404
|
431
|
+
UI.user_error!("Test Case #{test_case_name} not found")
|
432
|
+
else
|
433
|
+
UI.crash!(err)
|
434
|
+
end
|
392
435
|
end
|
393
436
|
|
394
|
-
def self.poll_test_finished(alpha_client,
|
437
|
+
def self.poll_test_finished(alpha_client, release_tests)
|
438
|
+
release_test_names = release_tests.map(&:name)
|
395
439
|
TEST_MAX_POLLING_RETRIES.times do
|
396
|
-
UI.message("⏳
|
440
|
+
UI.message("⏳ #{release_test_names.size} automated test results are pending.")
|
397
441
|
sleep(TEST_POLLING_INTERVAL_SECONDS)
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
end
|
403
|
-
release_test.device_executions.each do |de|
|
404
|
-
case de.state
|
405
|
-
when 'PASSED', 'IN_PROGRESS'
|
406
|
-
next
|
407
|
-
when 'FAILED'
|
408
|
-
UI.test_failure!("Automated test failed for #{device_to_s(de.device)}: #{de.failed_reason}.")
|
409
|
-
when 'INCONCLUSIVE'
|
410
|
-
UI.test_failure!("Automated test inconclusive for #{device_to_s(de.device)}: #{de.inconclusive_reason}.")
|
442
|
+
release_test_names.delete_if do |release_test_name|
|
443
|
+
release_test = alpha_client.get_project_app_release_test(release_test_name)
|
444
|
+
if release_test.device_executions.all? { |e| e.state == 'PASSED' }
|
445
|
+
true
|
411
446
|
else
|
412
|
-
|
447
|
+
release_test.device_executions.each do |de|
|
448
|
+
case de.state
|
449
|
+
when 'PASSED', 'IN_PROGRESS'
|
450
|
+
next
|
451
|
+
when 'FAILED'
|
452
|
+
UI.test_failure!("Automated test failed for #{device_to_s(de.device)}: #{de.failed_reason}.")
|
453
|
+
when 'INCONCLUSIVE'
|
454
|
+
UI.test_failure!("Automated test inconclusive for #{device_to_s(de.device)}: #{de.inconclusive_reason}.")
|
455
|
+
else
|
456
|
+
UI.test_failure!("Unsupported automated test state for #{device_to_s(de.device)}: #{de.state}.")
|
457
|
+
end
|
458
|
+
end
|
459
|
+
false
|
413
460
|
end
|
414
461
|
end
|
462
|
+
if release_test_names.empty?
|
463
|
+
UI.success("✅ Passed automated test(s).")
|
464
|
+
return
|
465
|
+
end
|
415
466
|
end
|
416
467
|
UI.test_failure!("It took longer than expected to process your test, please try again.")
|
417
468
|
end
|
@@ -493,7 +544,7 @@ module Fastlane
|
|
493
544
|
type: String),
|
494
545
|
FastlaneCore::ConfigItem.new(key: :groups_file,
|
495
546
|
env_name: "FIREBASEAPPDISTRO_GROUPS_FILE",
|
496
|
-
description: "Path to file containing group aliases used for distribution, separated by commas",
|
547
|
+
description: "Path to file containing group aliases used for distribution, separated by commas or newlines",
|
497
548
|
optional: true,
|
498
549
|
type: String),
|
499
550
|
FastlaneCore::ConfigItem.new(key: :testers,
|
@@ -503,7 +554,7 @@ module Fastlane
|
|
503
554
|
type: String),
|
504
555
|
FastlaneCore::ConfigItem.new(key: :testers_file,
|
505
556
|
env_name: "FIREBASEAPPDISTRO_TESTERS_FILE",
|
506
|
-
description: "Path to file containing email addresses of testers, separated by commas",
|
557
|
+
description: "Path to file containing email addresses of testers, separated by commas or newlines",
|
507
558
|
optional: true,
|
508
559
|
type: String),
|
509
560
|
FastlaneCore::ConfigItem.new(key: :release_notes,
|
@@ -520,12 +571,13 @@ module Fastlane
|
|
520
571
|
# Release Testing
|
521
572
|
FastlaneCore::ConfigItem.new(key: :test_devices,
|
522
573
|
env_name: "FIREBASEAPPDISTRO_TEST_DEVICES",
|
523
|
-
description: "List of devices to run automated tests on, in the format 'model=<model-id>,version=<os-version-id>,locale=<locale>,orientation=<orientation>;model=<model-id>,...'. Run 'gcloud firebase test android|ios models list' to see available devices. Note: This feature is in beta",
|
574
|
+
description: "List of devices (separated by semicolons) to run automated tests on, in the format 'model=<model-id>,version=<os-version-id>,locale=<locale>,orientation=<orientation>;model=<model-id>,...'. Run 'gcloud firebase test android|ios models list' to see available devices. Note: This feature is in beta",
|
524
575
|
optional: true,
|
525
576
|
type: String),
|
526
577
|
FastlaneCore::ConfigItem.new(key: :test_devices_file,
|
527
578
|
env_name: "FIREBASEAPPDISTRO_TEST_DEVICES_FILE",
|
528
|
-
description: "Path to file containing a list of devices to run automated tests on, in the format 'model=<model-id>,version=<os-version-id>,locale=<locale>,orientation=<orientation>;model=<model-id>,...'.
|
579
|
+
description: "Path to file containing a list of devices (sepatated by semicolons or newlines) to run automated tests on, in the format 'model=<model-id>,version=<os-version-id>,locale=<locale>,orientation=<orientation>;model=<model-id>,...'. " \
|
580
|
+
"Run 'gcloud firebase test android|ios models list' to see available devices. Note: This feature is in beta",
|
529
581
|
optional: true,
|
530
582
|
type: String),
|
531
583
|
FastlaneCore::ConfigItem.new(key: :test_username,
|
@@ -559,6 +611,16 @@ module Fastlane
|
|
559
611
|
optional: false,
|
560
612
|
default_value: false,
|
561
613
|
type: Boolean),
|
614
|
+
FastlaneCore::ConfigItem.new(key: :test_case_ids,
|
615
|
+
env_name: "FIREBASEAPPDISTRO_TEST_CASE_IDS",
|
616
|
+
description: "Test Case IDs, separated by commas. Note: This feature is in beta",
|
617
|
+
optional: true,
|
618
|
+
type: String),
|
619
|
+
FastlaneCore::ConfigItem.new(key: :test_case_ids_file,
|
620
|
+
env_name: "FIREBASEAPPDISTRO_TEST_CASE_IDS_FILE",
|
621
|
+
description: "Path to file with containing Test Case IDs, separated by commas or newlines. Note: This feature is in beta",
|
622
|
+
optional: true,
|
623
|
+
type: String),
|
562
624
|
|
563
625
|
# Auth
|
564
626
|
FastlaneCore::ConfigItem.new(key: :firebase_cli_token,
|
@@ -577,11 +639,7 @@ module Fastlane
|
|
577
639
|
end
|
578
640
|
|
579
641
|
def self.is_supported?(platform)
|
580
|
-
|
581
|
-
# See: https://docs.fastlane.tools/advanced/#control-configuration-by-lane-and-by-platform
|
582
|
-
#
|
583
|
-
# [:ios, :mac, :android].include?(platform)
|
584
|
-
true
|
642
|
+
[:ios, :android].include?(platform)
|
585
643
|
end
|
586
644
|
|
587
645
|
def self.example_code
|
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'fastlane/action'
|
2
|
+
require 'fastlane_core'
|
2
3
|
require 'fastlane_core/ui/ui'
|
3
|
-
|
4
|
+
require_relative '../helper/firebase_app_distribution_apis'
|
4
5
|
require_relative '../helper/firebase_app_distribution_helper'
|
6
|
+
require_relative '../helper/firebase_app_distribution_error_message'
|
5
7
|
require_relative '../helper/firebase_app_distribution_auth_client'
|
6
8
|
|
7
9
|
module Fastlane
|
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'fastlane/action'
|
2
|
+
require 'fastlane_core'
|
2
3
|
require 'fastlane_core/ui/ui'
|
3
|
-
|
4
|
+
require_relative '../helper/firebase_app_distribution_apis'
|
4
5
|
require_relative '../helper/firebase_app_distribution_helper'
|
6
|
+
require_relative '../helper/firebase_app_distribution_error_message'
|
5
7
|
require_relative '../helper/firebase_app_distribution_auth_client'
|
6
8
|
|
7
9
|
module Fastlane
|
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'fastlane/action'
|
2
|
+
require 'fastlane_core'
|
2
3
|
require 'fastlane_core/ui/ui'
|
3
|
-
|
4
|
+
require_relative '../helper/firebase_app_distribution_apis'
|
4
5
|
require_relative '../helper/firebase_app_distribution_helper'
|
6
|
+
require_relative '../helper/firebase_app_distribution_error_message'
|
5
7
|
require_relative '../helper/firebase_app_distribution_auth_client'
|
6
8
|
|
7
9
|
module Fastlane
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'fastlane/action'
|
2
|
-
require '
|
2
|
+
require 'fastlane_core'
|
3
|
+
require_relative '../helper/firebase_app_distribution_apis'
|
3
4
|
require_relative '../helper/firebase_app_distribution_auth_client'
|
5
|
+
require_relative '../helper/firebase_app_distribution_error_message'
|
4
6
|
require_relative '../helper/firebase_app_distribution_helper'
|
5
7
|
|
6
8
|
module Fastlane
|
data/lib/fastlane/plugin/firebase_app_distribution/actions/firebase_app_distribution_get_udids.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
require 'fastlane/action'
|
2
|
+
require 'fastlane_core'
|
2
3
|
require 'open3'
|
3
4
|
require 'shellwords'
|
4
5
|
require 'googleauth'
|
5
|
-
|
6
|
+
require_relative '../helper/firebase_app_distribution_apis'
|
6
7
|
require_relative '../helper/firebase_app_distribution_helper'
|
7
8
|
require_relative '../helper/firebase_app_distribution_error_message'
|
8
9
|
require_relative '../helper/firebase_app_distribution_auth_client'
|
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'fastlane/action'
|
2
|
+
require 'fastlane_core'
|
2
3
|
require 'fastlane_core/ui/ui'
|
3
|
-
|
4
|
+
require_relative '../helper/firebase_app_distribution_apis'
|
4
5
|
require_relative '../helper/firebase_app_distribution_helper'
|
6
|
+
require_relative '../helper/firebase_app_distribution_error_message'
|
5
7
|
require_relative '../helper/firebase_app_distribution_auth_client'
|
6
8
|
|
7
9
|
module Fastlane
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'google/apis/firebaseappdistribution_v1'
|
2
|
+
require 'google/apis/firebaseappdistribution_v1alpha'
|
3
|
+
|
4
|
+
# This is partially copied from google/apis/firebaseappdistribution_v1alpha v0.9.0 (2024-12-08) based discovery document revision 20241204.
|
5
|
+
# We can't depend on that version directly as long as fastlane locks google-cloud-env < 2.0.0 (to support Ruby 2.6).
|
6
|
+
# Newer versions of the API clients depend on google-apis-core >= 0.15.0 which depends on googleauth ~> 1.9 which depends on google-cloud-env ~> 2.1.
|
7
|
+
# See also https://github.com/fastlane/fastlane/pull/21685#pullrequestreview-2490037163
|
8
|
+
module Google
|
9
|
+
module Apis
|
10
|
+
module FirebaseappdistributionV1alpha
|
11
|
+
class GoogleFirebaseAppdistroV1alphaReleaseTest
|
12
|
+
include Google::Apis::Core::Hashable
|
13
|
+
|
14
|
+
attr_accessor :create_time
|
15
|
+
attr_accessor :device_executions
|
16
|
+
attr_accessor :display_name
|
17
|
+
attr_accessor :login_credential
|
18
|
+
attr_accessor :name
|
19
|
+
attr_accessor :test_case
|
20
|
+
attr_accessor :test_state
|
21
|
+
|
22
|
+
def initialize(**args)
|
23
|
+
update!(**args)
|
24
|
+
end
|
25
|
+
|
26
|
+
def update!(**args)
|
27
|
+
@create_time = args[:create_time] if args.key?(:create_time)
|
28
|
+
@device_executions = args[:device_executions] if args.key?(:device_executions)
|
29
|
+
@display_name = args[:display_name] if args.key?(:display_name)
|
30
|
+
@login_credential = args[:login_credential] if args.key?(:login_credential)
|
31
|
+
@name = args[:name] if args.key?(:name)
|
32
|
+
@test_case = args[:test_case] if args.key?(:test_case)
|
33
|
+
@test_state = args[:test_state] if args.key?(:test_state)
|
34
|
+
end
|
35
|
+
|
36
|
+
class Representation < Google::Apis::Core::JsonRepresentation
|
37
|
+
property :create_time, as: 'createTime'
|
38
|
+
collection :device_executions, as: 'deviceExecutions', class: Google::Apis::FirebaseappdistributionV1alpha::GoogleFirebaseAppdistroV1alphaDeviceExecution, decorator: Google::Apis::FirebaseappdistributionV1alpha::GoogleFirebaseAppdistroV1alphaDeviceExecution::Representation
|
39
|
+
property :display_name, as: 'displayName'
|
40
|
+
property :login_credential, as: 'loginCredential', class: Google::Apis::FirebaseappdistributionV1alpha::GoogleFirebaseAppdistroV1alphaLoginCredential, decorator: Google::Apis::FirebaseappdistributionV1alpha::GoogleFirebaseAppdistroV1alphaLoginCredential::Representation
|
41
|
+
property :name, as: 'name'
|
42
|
+
property :test_case, as: 'testCase'
|
43
|
+
property :test_state, as: 'testState'
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/fastlane/plugin/firebase_app_distribution/helper/firebase_app_distribution_error_message.rb
CHANGED
@@ -4,6 +4,8 @@ module ErrorMessage
|
|
4
4
|
SERVICE_CREDENTIALS_NOT_FOUND = "Service credentials file does not exist. Please check the service credentials path and try again."
|
5
5
|
PARSE_SERVICE_CREDENTIALS_ERROR = "Failed to extract service account information from the service credentials file."
|
6
6
|
PARSE_FIREBASE_TOOLS_JSON_ERROR = "Encountered error parsing json file. Ensure the firebase-tools.json file is formatted correctly."
|
7
|
+
PERMISSION_DENIED_ERROR = "The authenticated user does not have the required permissions on the Firebase project"
|
8
|
+
UPLOAD_BINARY_ERROR = "App Distribution halted because it had a problem uploading the app binary."
|
7
9
|
UPLOAD_RELEASE_NOTES_ERROR = "App Distribution halted because it had a problem uploading release notes."
|
8
10
|
UPLOAD_TESTERS_ERROR = "App Distribution halted because it had a problem adding testers/groups."
|
9
11
|
GET_RELEASE_TIMEOUT = "App Distribution failed to fetch release information."
|
data/lib/fastlane/plugin/firebase_app_distribution/helper/firebase_app_distribution_helper.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
require 'fastlane_core/ui/ui'
|
2
2
|
require 'cfpropertylist'
|
3
|
+
require 'google/apis/core'
|
4
|
+
require 'google/apis/options'
|
5
|
+
require_relative './firebase_app_distribution_error_message'
|
3
6
|
|
4
7
|
module Fastlane
|
5
8
|
UI = FastlaneCore::UI unless Fastlane.const_defined?("UI")
|
@@ -27,7 +30,7 @@ module Fastlane
|
|
27
30
|
|
28
31
|
# Returns the array representation of a string with trimmed comma
|
29
32
|
# seperated values.
|
30
|
-
def string_to_array(string, delimiter =
|
33
|
+
def string_to_array(string, delimiter = /[,\n]/)
|
31
34
|
return [] if string.nil?
|
32
35
|
# Strip string and then strip individual values
|
33
36
|
string.strip.split(delimiter).map(&:strip)
|
metadata
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-firebase_app_distribution
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Natchev
|
8
8
|
- Manny Jimenez
|
9
9
|
- Alonso Salas Infante
|
10
|
-
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2025-01-07 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: google-apis-firebaseappdistribution_v1
|
@@ -166,7 +165,6 @@ dependencies:
|
|
166
165
|
- - ">="
|
167
166
|
- !ruby/object:Gem::Version
|
168
167
|
version: 2.127.1
|
169
|
-
description:
|
170
168
|
email:
|
171
169
|
- snatchev@google.com
|
172
170
|
- mannyjimenez@google.com
|
@@ -186,6 +184,7 @@ files:
|
|
186
184
|
- lib/fastlane/plugin/firebase_app_distribution/actions/firebase_app_distribution_get_latest_release.rb
|
187
185
|
- lib/fastlane/plugin/firebase_app_distribution/actions/firebase_app_distribution_get_udids.rb
|
188
186
|
- lib/fastlane/plugin/firebase_app_distribution/actions/firebase_app_distribution_remove_testers_action.rb
|
187
|
+
- lib/fastlane/plugin/firebase_app_distribution/helper/firebase_app_distribution_apis.rb
|
189
188
|
- lib/fastlane/plugin/firebase_app_distribution/helper/firebase_app_distribution_auth_client.rb
|
190
189
|
- lib/fastlane/plugin/firebase_app_distribution/helper/firebase_app_distribution_error_message.rb
|
191
190
|
- lib/fastlane/plugin/firebase_app_distribution/helper/firebase_app_distribution_helper.rb
|
@@ -194,7 +193,6 @@ homepage: https://github.com/fastlane/fastlane-plugin-firebase_app_distribution
|
|
194
193
|
licenses:
|
195
194
|
- MIT
|
196
195
|
metadata: {}
|
197
|
-
post_install_message:
|
198
196
|
rdoc_options: []
|
199
197
|
require_paths:
|
200
198
|
- lib
|
@@ -209,8 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
209
207
|
- !ruby/object:Gem::Version
|
210
208
|
version: '0'
|
211
209
|
requirements: []
|
212
|
-
rubygems_version: 3.
|
213
|
-
signing_key:
|
210
|
+
rubygems_version: 3.6.2
|
214
211
|
specification_version: 4
|
215
212
|
summary: Release your beta builds to Firebase App Distribution. https://firebase.google.com/docs/app-distribution
|
216
213
|
test_files: []
|