{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "com.cloudbees.jenkins.GitHubPushCause",
          "shortDescription" : "Started by GitHub push by ti-chi-bot[bot]"
        },
        {
          "_class" : "com.cloudbees.jenkins.GitHubPushCause",
          "shortDescription" : "Started by GitHub push by ti-chi-bot[bot]"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "jenkins.metrics.impl.TimeInQueueAction",
      "blockedDurationMillis" : 0,
      "blockedTimeMillis" : 0,
      "buildableDurationMillis" : 23377,
      "buildableTimeMillis" : 23377,
      "buildingDurationMillis" : 105556,
      "executingTimeMillis" : 105556,
      "executorUtilization" : 1.0,
      "subTaskCount" : 0,
      "waitingDurationMillis" : 5500,
      "waitingTimeMillis" : 5500
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "origin/main" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1025,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "5bd7e6d0af50fdafd0e6f477ec0faa7695beb741",
            "branch" : [
              {
                "SHA1" : "5bd7e6d0af50fdafd0e6f477ec0faa7695beb741",
                "name" : "origin/main"
              }
            ]
          },
          "revision" : {
            "SHA1" : "5bd7e6d0af50fdafd0e6f477ec0faa7695beb741",
            "branch" : [
              {
                "SHA1" : "5bd7e6d0af50fdafd0e6f477ec0faa7695beb741",
                "name" : "origin/main"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "5bd7e6d0af50fdafd0e6f477ec0faa7695beb741",
        "branch" : [
          {
            "SHA1" : "5bd7e6d0af50fdafd0e6f477ec0faa7695beb741",
            "name" : "origin/main"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/PingCAP-QE/ci.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#1025",
  "duration" : 105556,
  "estimatedDuration" : 51561,
  "executor" : None,
  "fullDisplayName" : "seed #1025",
  "id" : "1025",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 1025,
  "queueId" : 2008967,
  "result" : "SUCCESS",
  "timestamp" : 1758543015860,
  "url" : "https://do.pingcap.net/jenkins/view/all/job/seed/1025/",
  "builtOn" : "default-4k09n",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "tools/reporters/ci/flaky-tests/core/ConfigLoader.ts",
          ".gitignore",
          "tools/reporters/ci/flaky-tests/docs/owner-map.example.yaml",
          "tools/reporters/ci/flaky-tests/core/Database.ts",
          "tools/reporters/ci/flaky-tests/main.ts",
          "tools/reporters/ci/flaky-tests/core/OwnerResolver.ts",
          "tools/reporters/ci/flaky-tests/docs/README.md",
          "tools/reporters/ci/flaky-tests/render/HtmlRenderer.ts",
          "tools/reporters/ci/flaky-tests/core/OwnerResolver.test.ts",
          "tools/reporters/ci/flaky-tests/utils/db.ts",
          "tools/reporters/ci/flaky-tests/deno.json",
          "tools/reporters/ci/flaky-tests/deno.lock",
          "tools/reporters/ci/flaky-tests/core/types.ts",
          "tools/reporters/ci/flaky-tests/core/FlakyReporter.ts",
          "tools/reporters/ci/flaky-tests/utils/EmailClient.ts"
        ],
        "commitId" : "5bd7e6d0af50fdafd0e6f477ec0faa7695beb741",
        "timestamp" : 1758542983000,
        "author" : {
          "absoluteUrl" : "https://do.pingcap.net/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "feat(tools): add reporter tool for flaky test analysis and reporting (#3750)\u000a\u000aThis pull request introduces three new core modules to the Flaky\u000aReporter tool: `ConfigLoader`, `Database`, and `FlakyReporter`. These\u000amodules provide a clear separation of responsibilities for configuration\u000aparsing, database interaction, and flaky test aggregation, making the\u000acodebase easier to maintain and extend. Each module is well-documented\u000aand designed for composability, with improved error handling and type\u000asafety.\u000a\u000a**Core module additions and responsibilities:**\u000a\u000a* **Configuration management**\u000a- Added `ConfigLoader` class for parsing CLI arguments and environment\u000avariables, resolving time windows, database and SMTP configurations, and\u000aloading owner maps from YAML/JSON files. This centralizes configuration\u000alogic and improves error handling.\u000a\u000a* **Database abstraction**\u000a- Added `Database` class to manage MySQL connections, provide typed\u000aaccessors for querying `problem_case_runs` and owner-mapping tables, and\u000aensure safe connection lifecycle management. Includes methods for\u000afetching runs, querying owners, and quoting table names securely.\u000a\u000a* **Flaky test aggregation**\u000a- Added `FlakyReporter` class to aggregate test runs by case, suite, and\u000ateam, and to compute top flaky cases. Integrates with `OwnerResolver`\u000afor ownership resolution and provides verbose logging for debugging.\u000a\u000a---------\u000a\u000aCo-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>\u000aCo-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>\u000a",
        "date" : "2025-09-22 12:09:43 +0000",
        "id" : "5bd7e6d0af50fdafd0e6f477ec0faa7695beb741",
        "msg" : "feat(tools): add reporter tool for flaky test analysis and reporting",
        "paths" : [
          {
            "editType" : "add",
            "file" : "tools/reporters/ci/flaky-tests/core/ConfigLoader.ts"
          },
          {
            "editType" : "add",
            "file" : "tools/reporters/ci/flaky-tests/core/OwnerResolver.test.ts"
          },
          {
            "editType" : "add",
            "file" : "tools/reporters/ci/flaky-tests/main.ts"
          },
          {
            "editType" : "add",
            "file" : "tools/reporters/ci/flaky-tests/deno.json"
          },
          {
            "editType" : "add",
            "file" : "tools/reporters/ci/flaky-tests/docs/README.md"
          },
          {
            "editType" : "add",
            "file" : "tools/reporters/ci/flaky-tests/core/OwnerResolver.ts"
          },
          {
            "editType" : "edit",
            "file" : ".gitignore"
          },
          {
            "editType" : "add",
            "file" : "tools/reporters/ci/flaky-tests/deno.lock"
          },
          {
            "editType" : "add",
            "file" : "tools/reporters/ci/flaky-tests/core/types.ts"
          },
          {
            "editType" : "add",
            "file" : "tools/reporters/ci/flaky-tests/utils/db.ts"
          },
          {
            "editType" : "add",
            "file" : "tools/reporters/ci/flaky-tests/core/Database.ts"
          },
          {
            "editType" : "add",
            "file" : "tools/reporters/ci/flaky-tests/docs/owner-map.example.yaml"
          },
          {
            "editType" : "add",
            "file" : "tools/reporters/ci/flaky-tests/render/HtmlRenderer.ts"
          },
          {
            "editType" : "add",
            "file" : "tools/reporters/ci/flaky-tests/core/FlakyReporter.ts"
          },
          {
            "editType" : "add",
            "file" : "tools/reporters/ci/flaky-tests/utils/EmailClient.ts"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://do.pingcap.net/jenkins/user/noreply",
      "fullName" : "noreply"
    }
  ]
}