Skip to content

Automatically update QA issues for flaky failures

What does this MR do and why?

Automatically update QA issues for flaky failures

If QA fails on gstg-cny or gprd-cny, an automatic report is generated to document such failure. To address this report, Release managers have to manually add labels and close it. Considering this is a manual task, it is easy to slip in the middle of release manager responsibilities and it also adds manual labor.

This commit creates a Qa::Triage class to look for open reports, label them as flaky and then proceed to close them. This class is only executed if the quality pipeline succeeded, guaranteeing it only targets reports associated with flaky failures.

Test

  1. A fake test issue was created gitlab-org/release/tasks#11051 (closed)
  2. The code was updated to match the issue characteristics
Click to expand
diff --git a/lib/release_tools/auto_deploy/coordinated_pipeline/qa/triager.rb b/lib/release_tools/auto_deploy/coordinated_pipeline/qa/triager.rb
index ada781ac..0c73f5ec 100644
--- a/lib/release_tools/auto_deploy/coordinated_pipeline/qa/triager.rb
+++ b/lib/release_tools/auto_deploy/coordinated_pipeline/qa/triager.rb
@@ -14,7 +14,7 @@ module ReleaseTools
           end

           def execute
-            return unless Feature.enabled?(:quality_triager)
+         #   return unless Feature.enabled?(:quality_triager)

             logger.info('Searching quality issue', deploy_version: deploy_version, environment: environment)

@@ -46,7 +46,7 @@ module ReleaseTools
           def options
             {
               state: 'opened',
-              author_id: ReleaseTools::Security::Client::RELEASE_TOOLS_BOT_ID,
+              author_id: 33_100,
               search: "Environment: #{environment} Auto-deploy package: #{deploy_version}"
             }
           end
(END)
  1. The Triager class was executed locally:
Click to expand
14:21:03  bundle exec pry --gem
[1] pry(main)> triager = ReleaseTools::AutoDeploy::CoordinatedPipeline::Qa::Triager.new(deploy_version: '17.1.202406041400-696dc61a063.1888b47a80d', environment: 'gstg-cny')
=> #<ReleaseTools::AutoDeploy::CoordinatedPipeline::Qa::Triager:0x000000010e324bf0
 @client=ReleaseTools::GitlabClient,
 @deploy_version="17.1.202406041400-696dc61a063.1888b47a80d",
 @environment="gstg-cny">
[2] pry(main)> triager.execute
2024-06-04 14:21:12.143800 I ReleaseTools::AutoDeploy::CoordinatedPipeline::Qa::Triager -- Searching quality issue -- {:deploy_version=>"17.1.202406041400-696dc61a063.1888b47a80d", :environment=>"gstg-cny"}
2024-06-04 14:21:12.472862 D ReleaseTools::GitlabClient -- [HTTParty] [2024-06-04 14:21:12 -0600] 200 "GET https://gitlab.com/api/v4/projects/gitlab-org%2Frelease%2Ftasks/issues" -
2024-06-04 14:21:13.103111 D ReleaseTools::GitlabClient -- [HTTParty] [2024-06-04 14:21:13 -0600] 201 "POST https://gitlab.com/api/v4/projects/gitlab-org%2Frelease%2Ftasks/issues/11051/notes" 617
2024-06-04 14:21:13.103374 I ReleaseTools::AutoDeploy::CoordinatedPipeline::Qa::Triager -- Updating issue with labels -- {:web_url=>"https://gitlab.com/gitlab-org/release/tasks/-/issues/11051"}
2024-06-04 14:21:13.656831 D ReleaseTools::GitlabClient -- [HTTParty] [2024-06-04 14:21:13 -0600] 200 "PUT https://gitlab.com/api/v4/projects/gitlab-org%2Frelease%2Ftasks/issues/11051" -
2024-06-04 14:21:13.657181 I ReleaseTools::AutoDeploy::CoordinatedPipeline::Qa::Triager -- Closing issue -- {:web_url=>"https://gitlab.com/gitlab-org/release/tasks/-/issues/11051"}
=> #<Gitlab::ObjectifiedHash:217660 {hash: {"id"=>147418642, "iid"=>11051, "project_id"=>5064907, "title"=>"TEST - QA failure",
Test Issue created Test issue updated
Screenshot_2024-06-04_at_2.19.30_p.m. Screenshot_2024-06-04_at_2.21.26_p.m.
The issue was created with release-blocker Issue was updated accordingly

Author Check-list

  • [-] Has documentation been updated?
Edited by Mayra Cabrera

Merge request reports