调用TeamCity API获取含步骤失败状态的正确REST请求是什么

解决方案
你当前调用返回的build.status为顶层聚合状态,若你的构建配置开启了「步骤失败时继续执行构建」规则,该字段不会同步步骤失败的结果,仅会在触发超时、依赖失败等全局异常时返回非SUCCESS状态。你可以通过以下两种方式获取包含步骤失败的完整构建状态:
方式1:调用专用状态端点(最简便)
该端点会直接返回聚合所有失败条件的最终构建状态,无需额外解析字段:
$status = Invoke-RestMethod -Uri "%teamcity.serverUrl%/httpAuth/app/rest/builds/id:%teamcity.build.id%/status" -Method Get -Headers $header
返回值为纯字符串,构建正常时返回SUCCESS,存在步骤失败、测试失败等异常时返回FAILURE。
方式2:原有接口补充字段参数
如果你需要同时获取构建的其他元数据,可以在原有请求URL后添加fields参数,主动拉取步骤状态和完整状态说明:
$buildInfo = Invoke-RestMethod -Uri "%teamcity.serverUrl%/httpAuth/app/rest/builds/id:%teamcity.build.id%?fields=id,status,statusText,buildSteps(step(id,name,status))" -Method Get -Headers $header
你可以通过$buildInfo.statusText查看状态详情,也可以遍历$buildInfo.buildSteps.step校验每一步的执行状态。
补充说明:如果调用后仍未获取到正确的失败状态,请检查你的构建配置「失败条件」页,确认已经勾选「任意构建步骤执行失败时将构建标记为失败」选项。
内容的提问来源于stack exchange,提问作者livetoski78
相关产品推荐
相关产品推荐

