You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GitLab REST/GraphQL API查询不稳定测试

可行方案整理

1. 批量GraphQL查询减少请求次数

先通过GraphQL一次性拉取指定时间范围内所有流水线及其关联的测试构建ID,再用批量查询或片段复用的方式,一次性请求多个流水线的测试数据,避免逐个请求的繁琐:

  • 第一步:获取目标时间范围内的流水线及对应测试构建ID
query GetPipelinesWithBuilds {
  project(fullPath: "path_to/my_project") {
    pipelines(createdAfter: "2024-01-01T00:00:00Z", createdBefore: "2024-02-01T00:00:00Z") {
      nodes {
        iid
        jobs(status: SUCCESS, namePattern: "test") { # 筛选测试相关的job,根据实际job名调整
          nodes {
            id
          }
        }
      }
    }
  }
}
  • 第二步:用批量查询一次性获取所有目标流水线的测试数据
query GetFlakeyTestsBatch {
  pipeline1: project(fullPath: "path_to/my_project") {
    pipeline(iid: "261264") {
      testSuite(buildIds: "1671439") {
        testCases {
          nodes {
            name
            classname
            recentFailures {
              count
              baseBranch
            }
          }
        }
      }
    }
  }
  pipeline2: project(fullPath: "path_to/my_project") {
    pipeline(iid: "261265") {
      testSuite(buildIds: "1671440") {
        testCases {
          nodes {
            name
            classname
            recentFailures {
              count
              baseBranch
            }
          }
        }
      }
    }
  }
  # 可继续添加更多流水线查询
}

2. 用REST API批量自动化处理

虽然没有直接返回不稳定测试的REST接口,但可以通过组合多个REST接口,用脚本自动化遍历时间范围内的流水线并聚合数据:

  1. 调用GET /projects/:id/pipelines,通过updated_after和updated_before参数筛选时间范围内的流水线,拿到所有流水线ID。
  2. 对每个流水线,调用GET /projects/:id/pipelines/:pipeline_id/jobs,筛选出测试类型的job(根据job名称判断),拿到job的ID。
  3. 调用你发现的/pipelines/:pipeline_id/tests/suite.json?build_ids[]=:job_id接口,拉取测试数据,最后在脚本里聚合所有测试用例的recent_failures数据,筛选出失败次数多的不稳定测试。
    用Python、Shell等脚本可以轻松实现循环请求、数据解析和聚合,比手动操作效率高很多。

3. 利用GitLab内置的测试分析功能(需Premium/Ultimate版本)

如果你的GitLab是Premium或更高版本,直接用项目内的Analytics > Test Analytics功能:

  • 进入项目后,在左侧菜单找到Analytics -> Test Analytics
  • 可设置时间范围,查看测试用例的失败次数、通过率等统计,系统会自动识别频繁失败的不稳定测试,无需自己写查询脚本。

4. 自定义GitLab CI/CD收集测试数据

在项目的CI/CD流水线里添加一个阶段,每次测试跑完后,将测试报告中的recent_failures数据上传到自定义存储(比如数据库、GitLab的CI/CD变量或项目wiki),后续直接从这个存储中查询聚合好的不稳定测试数据,避免每次重新遍历历史流水线。

内容的提问来源于stack exchange,提问作者br3nt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 18:22:38