Azure devops Azure DevOps API在运行和构建开始时间之间存在差异

Azure devops Azure DevOps API在运行和构建开始时间之间存在差异,azure-devops,azure-devops-rest-api,Azure Devops,Azure Devops Rest Api,我正在收集Azure DevOps构建持续时间的统计数据。我正在使用多个Azure DevOps API端点,并注意到管道和构建响应有效负载之间存在差异。虽然两个端点返回相同的生成结束时间,createDate值始终早于startTime值 直觉上,我认为构建的开始时间应该与构建运行的开始时间平行 我使用这两个端点从同一构建中检索数据,该构建包含runId参数74和相应的buildId参数2731 调用{AzureDevOps}/{project}/\u-API/pipelines/74/run

我正在收集Azure DevOps构建持续时间的统计数据。我正在使用多个Azure DevOps API端点,并注意到管道和构建响应有效负载之间存在差异。虽然两个端点返回相同的生成结束时间,
createDate
值始终早于
startTime

直觉上,我认为构建的开始时间应该与构建运行的开始时间平行

我使用这两个端点从同一构建中检索数据,该构建包含
runId
参数74和相应的
buildId
参数2731

调用
{AzureDevOps}/{project}/\u-API/pipelines/74/runs?{API\u v6}
返回
createDate
值2020-10-14T19:43:55.4471062Z和
finishedDate
值2020-10-14T19:49:29.1295883Z。调用
{AzureDevOps}/{project}/\u API/build/builds/2731{API_v6}
返回
startTime
值2020-10-14T19:47:53.1064066Z和
finishTime
值2020-10-14T19:49:29.1295883Z


上面的
createDate
值在
startTime
值之前4分钟开始。产生这种差异的原因是什么?

我也做了一个测试,得到了以下结果:

  • 建造
  • 管道
在我的例子中,我在
startTime
/
createdDate
中得到了不同的值,这对我来说意味着

  • startTime
    -执行生成的时间。我检查了日志,第一个条目是
    2020-10-15T02:40:22.1518676Z##[部分]开始:作业
  • createdDate
    -创建管道运行的时间,因此它还包括等待可用作业的时间
我在
finishTime
finishedDate
中得到了相同的结果,但在这里可能也有相同的结果。因此,第二个可能包括释放代理的时间。日志中的最后一项是
2020-10-15T02:41:00.1014543Z##[section]Finishing:Job
,小于API中的值

也许您可以通过查看
时间线
端点得到更准确的结果:

https://dev.azure.com/{{organization}}/{{project}}/_apis/build/builds/7512/timeline?api-version=6.0
例如,您可以检查阶段的执行时间:

“以前的尝试”:[],
“id”:“96ac2280-8cb4-5df5-99de-dd2da759617d”,
“parentId”:空,
“类型”:“阶段”,
“名称”:“默认值”,
“开始时间”:“2020-10-15T02:40:22.146667Z”,
“完成时间”:“2020-10-15T02:41:02.19Z”,

您还可以使用日志端点和解析响应来获取第一个和最后一个条目。我知道这不是一个优雅的解决方案,但我会选择它,因为它给出了最窄的时间范围。对于我来说,统计数据对于衡量处理管道的实时花费非常重要。

我也对此进行了测试,得到了以下结果:

  • 建造
  • 管道
在我的例子中,我在
startTime
/
createdDate
中得到了不同的值,这对我来说意味着

  • startTime
    -执行生成的时间。我检查了日志,第一个条目是
    2020-10-15T02:40:22.1518676Z##[部分]开始:作业
  • createdDate
    -创建管道运行的时间,因此它还包括等待可用作业的时间
我在
finishTime
finishedDate
中得到了相同的结果,但在这里可能也有相同的结果。因此,第二个可能包括释放代理的时间。日志中的最后一项是
2020-10-15T02:41:00.1014543Z##[section]Finishing:Job
,小于API中的值

也许您可以通过查看
时间线
端点得到更准确的结果:

https://dev.azure.com/{{organization}}/{{project}}/_apis/build/builds/7512/timeline?api-version=6.0
例如,您可以检查阶段的执行时间:

“以前的尝试”:[],
“id”:“96ac2280-8cb4-5df5-99de-dd2da759617d”,
“parentId”:空,
“类型”:“阶段”,
“名称”:“默认值”,
“开始时间”:“2020-10-15T02:40:22.146667Z”,
“完成时间”:“2020-10-15T02:41:02.19Z”,

您还可以使用日志端点和解析响应来获取第一个和最后一个条目。我知道这不是一个优雅的解决方案,但我会选择它,因为它给出了最窄的时间范围。对于我来说,统计数据对于衡量处理管道的实时花费非常重要。

管道运行端点createDate值等于构建端点queueTime值,而不是startTime值

:

:

运行管道时,管道不会立即启动。例如,如果您的组织中没有足够的并行作业,它将等待代理。您还可以从管道日志中找到:


如果管道尚未启动,则startTime将不会出现在Get Build REST API的响应中。但是您仍然可以获取queueTime和createdDate。

管道运行端点createDate值等于生成端点queueTime值,而不是startTime值

:

:

运行管道时,管道不会立即启动。例如,如果您的组织中没有足够的并行作业,它将等待代理。您还可以从管道日志中找到:

如果管道尚未启动,则startTime将不会出现在Get Build REST API的响应中。但您仍然可以获得queueTime和createdDate

https://dev.azure.com/{{organization}}/{{project}}/_apis/build/builds/7512/timeline?api-version=6.0