【问题标题】:Query builds failed because of timeout - Azure DevOps Server由于超时,查询生成失败 - Azure DevOps Server
【发布时间】:2020-12-17 03:40:29
【问题描述】:

在我们的开发环境中,我们有大量的存储库、大量的构建和构建服务器,而且大多数时候一切都按应有的方式工作 - 但是,我们看到由于超时而失败的构建有所增加。

这些超时不会发生,因为我们已经接近极限,而是因为管道中“卡住/阻塞”了某些东西,并且它一直停留在该步骤,直到超时终止构建。

为了更好地调试为什么会发生这种情况,我们需要能够查询由于此超时而导致失败的构建,例如,我们可以查看是否是特定的构建服务器或代理存在此问题。

我们在 API 中找不到任何会导致超时错误的内容,但我们可以看到 UI 能够以某种方式扣除它:

到目前为止,我们已经将范围缩小到查询所有具有已完成状态的构建 (through this API),但我们没有完成原因,并且构建时间与构建定义的超时时间永远不会完全相同,所以“猜测”它从执行计划来看也会有点不稳定。

我们如何才能将构建过滤到仅超时的构建?

【问题讨论】:

  • 嗨@Johny Skovdal,没有得到你的最新信息,下面的答案对你有帮助吗?或者,如果您有任何疑问,请随时在此处分享。
  • 是的,我也将其标记为已解决。我确实想念要测试的实际财产,但目前情况并非如此。 :)

标签: azure-devops azure-devops-server-2020


【解决方案1】:

我们可以使用下面的API 来获取构建的详细信息。

注意:不要添加timelineId,我们应该列出所有信息

GET https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/timeline?api-version=6.1-preview.2

如果因为超时设置而取消构建,我们可以得到消息:The job running on agent Hosted Agent ran longer than the maximum time of xxx minutes. For more information, see https://go.microsoft.com/fwlink/?linkid=2077134

顺便说一句,我们可以使用 API Builds - List 过滤所有失败的构建。如果由于超时设置而取消构建。结果是失败而不是取消。

【讨论】:

  • 正是我想要的!添加到答案:我通过以下过滤以获得我需要的记录 - Where-Object { $_.state -eq 'completed' -and ($_.type -eq 'Job') -and ($_.result -eq 'canceled')}
  • 我的测试数据不完整。这当然给了我所有取消的构建,包括超时。我必须添加以下测试:-and (($_.issues | Select-Object -first 1).message -match 'has exceeded the maximum execution time')
猜你喜欢
  • 1970-01-01
  • 2019-07-19
  • 1970-01-01
  • 2019-12-04
  • 1970-01-01
  • 2018-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多