从TeamCity API获取统计历史记录

8

根据查看TeamCity REST API文档,请求统计数据的方式如下:

http://teamcity:8111/httpAuth/app/rest/builds/<buildLocator>/statistics/ 

这种方法可以使用,但仅能提供当前构建的统计数据(通过测试、代码覆盖率、重复次数等),我想要构建一个图表来展示趋势,因此需要过去一个月的历史数据。

是否有一种方法可以从TeamCity API获取这些历史统计数据?

3个回答

4
与其直接访问数据库,你可以通过 TeamCity 上的 exportchart 端点来访问数据。据我所知,这不是一个已记录的 API,但我发现将 "type" 查询字符串参数更改为 json 可以获得 JSON 数据(而不是默认的 CSV)。你可以通过在构建配置->统计选项卡上玩弄下拉菜单,然后查看用于“将数据下载为 CSV”下载图标/按钮的 URL 来了解有关此端点的更多信息。例如:
http://teamcity/exportchart.html?type=json&buildTypeId=bt2&%40f_range=MONTH&%40filter.status=WARNING&showBranches=true&_graphKey=g&valueType=CodeCoverage&id=CodeCoveragebt2
据我所知,不允许自定义日期范围。
(请注意,“bt2”是我的系统中的构建配置 ID)

我得抽出时间来调查一下,谢谢! - Matthew

3

从TeamCity 8.1开始,要获取一组构建的统计值,请使用以下请求,如TeamCity REST文档所述:

 http://teamcity:8111/app/rest/builds?locator=BUILDS_LOCATOR&fields=build(id,number,status,buildType(id,name,projectName),statistics(property(name,value)))

这个函数将返回符合BUILDS_LOCATOR条件的构建节点,并在每个节点中“展开”统计信息。 例如,使用“buildType:(id:BUILD_CONFIG_ID)”作为“BUILDS_LOCATOR”,可以获取UI配置ID为“BUILD_CONFIG_ID”的构建配置所对应的构建。


0

很遗憾,我无法仅从TeamCity API中获取此数据,因此解决方案是与数据库对抗。

select 
    build_data_storage.build_id, 
    build_type_mapping.ext_id as 'build_type_id',
    data_storage_dict.value_type_key as 'metric_name', 
    build_data_storage.metric_value,
    history.build_number,
    history.build_finish_time_server
from 
    build_data_storage
join 
    data_storage_dict on build_data_storage.metric_id = data_storage_dict.metric_id
join
    history on build_data_storage.build_id = history.build_id
join
    build_type_mapping on history.build_type_id = build_type_mapping.int_id

最好不要直接查询TeamCity数据库,因为结构可能会从一个TeamCity版本变化到另一个版本,因此这种方法基本上不受JetBrains支持。 - Yaegor
@Yaegor 这个功能是什么时候添加的? - Matthew
1
数据库查询方法应该适用于所有非古老的TeamCity版本。但它在未来可能会出现问题。自TeamCity 8.1以来,可以通过另一个答案中提到的/app/rest/builds/... URL使用REST API方法。 - Yaegor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接