From d23f33082ad893fad172b17f1ce66bd847671d56 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 9 May 2023 18:09:11 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- scripts/api/get_package_and_test_job.rb | 30 ++++++++++++++-------- .../generate-failed-package-and-test-mr-message.rb | 16 +++++++----- 2 files changed, 29 insertions(+), 17 deletions(-) (limited to 'scripts') 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 diff --git a/scripts/generate-failed-package-and-test-mr-message.rb b/scripts/generate-failed-package-and-test-mr-message.rb index a53b393498c..c57f132d563 100755 --- a/scripts/generate-failed-package-and-test-mr-message.rb +++ b/scripts/generate-failed-package-and-test-mr-message.rb @@ -19,7 +19,7 @@ class GenerateFailedPackageAndTestMrMessage end def execute - return unless failed_package_and_test_job + return unless failed_package_and_test_pipeline add_discussion_to_mr end @@ -34,8 +34,8 @@ class GenerateFailedPackageAndTestMrMessage ).execute(content) end - def failed_package_and_test_job - @failed_package_and_test_job ||= GetPackageAndTestJob.new(API::DEFAULT_OPTIONS).execute + def failed_package_and_test_pipeline + @failed_package_and_test_pipeline ||= GetPackageAndTestJob.new(API::DEFAULT_OPTIONS).execute end def merge_request @@ -48,8 +48,10 @@ class GenerateFailedPackageAndTestMrMessage <<~MARKDOWN :warning: @#{author_username} The `e2e:package-and-test-ee` job has failed. - - Pipeline: #{pipeline_link} - - `package-and-test` pipeline: #{failed_package_and_test_job['web_url']} + - `e2e:package-and-test-ee` pipeline: #{failed_package_and_test_pipeline['web_url']} + + `e2e:package-and-test-ee` pipeline is allowed to fail due its [flakiness](#{package_and_test_link}). Failures should be + investigated to guarantee this backport complies with the Quality standards. Ping your team's associated Software Engineer in Test (SET) to confirm the failures are unrelated to the merge request. If there's no SET assigned, ask for assistance on the `#quality` Slack channel. @@ -60,8 +62,8 @@ class GenerateFailedPackageAndTestMrMessage merge_request['author']['username'] if merge_request end - def pipeline_link - "[##{ENV['CI_PIPELINE_ID']}](#{ENV['CI_PIPELINE_URL']})" + def package_and_test_link + "https://about.gitlab.com/handbook/engineering/quality/quality-engineering/test-metrics-dashboards/#package-and-test" end end -- cgit v1.2.1