2

我正在尝试从 Teamcity 获取我的构建数据并将其放入我正在创建的仪表板中。我正在获取大部分数据,但我缺少的是构建的时间戳。我在互联网上搜索了很多,但找不到它。在 teamcity 中,我可以看到所有构建的时间戳,但它在 timstamp 中不可用。

所有的建议都是appriciated。

谢谢

4

2 回答 2

4

您不需要为每个构建进行额外的调用,但您需要制定您希望如何返回响应。有一个名为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 文档 -全部和部分回复

希望这可以帮助

于 2016-03-14T18:41:20.450 回答
1

在 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):这样会快得多,但当然工作量更大。

于 2016-03-03T17:51:12.350 回答