我正在尝试从 Teamcity 获取我的构建数据并将其放入我正在创建的仪表板中。我正在获取大部分数据,但我缺少的是构建的时间戳。我在互联网上搜索了很多,但找不到它。在 teamcity 中,我可以看到所有构建的时间戳,但它在 timstamp 中不可用。
所有的建议都是appriciated。
谢谢
您不需要为每个构建进行额外的调用,但您需要制定您希望如何返回响应。有一个名为fields的查询字符串参数,可让您定义要返回的内容。
例如,要在原始调用中返回开始和结束数据,您可以将&fields=build(startDate,finishDate)添加到原始请求中
/httpAuth/app/rest/buildTypes/id:##BUILD_TYPE_ID##/builds?fields=build(startDate,finishDate)
这会返回这样的东西
<builds>
<build>
<startDate>20140202T230456+0000</startDate>
<finishDate>20140202T230518+0000</finishDate>
</build>
<build>
<startDate>20140202T224912+0000</startDate>
<finishDate>20140202T224957+0000</finishDate>
</build>
</builds>
需要注意的是,您现在必须专门定义要返回的内容。因此,要返回所有其他字段和开始/结束日期,请将此参数添加到查询字符串
&fields=build(id,buildTypeId,number,status,state,branchName,defaultBranch,href,webUrl,buildTypeId,startDate,finishDate)
TeamCity 文档 -全部和部分回复
希望这可以帮助
在 GET 之后/app/rest/builds?locator=buildType:...
,您需要获取您感兴趣的所有单独构建运行的详细数据。不幸的是,这意味着每个单独构建都需要额外的 REST 调用。
每个构建的 URL 将采用 形式/app/rest/builds/id:21966
,但不要在您的程序中对其进行硬编码。相反,当您遍历所有构建(由您的第一次调用返回)时,获取每个构建的href
属性并获取它。
总结一下: * GET/app/rest/builds?locator=buildType:...
一次 * 对于返回的数据集中的每个构建,对其href
进行另一个 REST 调用 * 对于每个返回的构建详细信息,时间戳位于以下子元素中:queuedDate
, startDate
, finishDate
,triggered
我们之前尝试过以这种方式实现仪表板,但发现它的速度慢得让人无法接受(REST 调用太多)。还有一种替代方法,那就是编写一个 TC 插件(使用本机 OpenAPI):这样会快得多,但当然工作量更大。