diff options
Diffstat (limited to 'scripts/api/get_package_and_test_job.rb')
-rw-r--r-- | scripts/api/get_package_and_test_job.rb | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/scripts/api/get_package_and_test_job.rb b/scripts/api/get_package_and_test_job.rb index dbc29f754d0..e9430c5f107 100644 --- a/scripts/api/get_package_and_test_job.rb +++ b/scripts/api/get_package_and_test_job.rb @@ -1,10 +1,15 @@ # frozen_string_literal: true require 'gitlab' - require_relative 'default_options' class GetPackageAndTestJob + FAILED_STATUS = [ + 'failed', + 'passed with warnings', + 'canceled' + ].freeze + def initialize(options) @project = options.fetch(:project) @pipeline_id = options.fetch(:pipeline_id) @@ -21,19 +26,24 @@ class GetPackageAndTestJob end def execute - package_and_test_job = nil + package_and_test_bridge = client + .pipeline_bridges(project, pipeline_id, per_page: 100) + .auto_paginate + .find { |job| job.name.include?('package-and-test-ee') } + + return if package_and_test_bridge&.downstream_pipeline.nil? + + package_and_test_pipeline = client + .pipeline(project, package_and_test_bridge.downstream_pipeline.id) + + return if package_and_test_pipeline.nil? - client.pipeline_bridges(project, pipeline_id, scope: 'failed', per_page: 100).auto_paginate do |job| - if job['name'].include?('package-and-test') - package_and_test_job = job - break - end - end + status = package_and_test_pipeline.detailed_status - package_and_test_job + return package_and_test_pipeline if FAILED_STATUS.include?(status&.label) end private - attr_reader :project, :pipeline_id, :exclude_allowed_to_fail_jobs, :client + attr_reader :project, :pipeline_id, :client end |