在 Azure DevOps 中,我试图获取管道分支上最新/最后一个管道的结果。这是为了检查分支上的先前构建是否由于某些错误而失败,并且在修复错误后,管道应该触发对应于分支的提交。如果分支构建成功,管道应该跳过构建。
我正在尝试使用以下命令获取结果,以使用 Azure DevOps API 调用获取结果,该调用在浏览器中工作正常,但在通过管道运行时给出 null。
previousRunId=$(curl -u ":$(System.AccessToken)" -X GET "$(System.CollectionUri)/$(System.TeamProjectId)/_apis/build/builds?definitions=$(System.DefinitionId)&branchName=$(Build.SourceBranch)&$top=1" | jq '.value[0].result')
echo "Previous run status: ${previousRunId}"
如何得到如下实际结果?
您的脚本中有一个例外。如果您在没有
jq
的情况下运行命令,您可能会发现以下消息:
{"$id":"1","innerException":null,"message":"buildIds 过滤器可能 不能与其他过滤器一起使用 参数。","typeName":"Microsoft.TeamFoundation.Build.WebApi.InvalidBuildQueryException, Microsoft.TeamFoundation.Build2.WebApi","typeKey":"InvalidBuildQueryException","errorCode":0,"eventId":3000}
你必须逃跑
$top
$(System.CollectionUri)/$(System.TeamProjectId)/_apis/build/builds?definitions=$(System.DefinitionId)&branchName=$(Build.SourceBranch)&\$top=1