我正在尝试使用以下方法在Azure devops中获取特定项目的所有生成详细信息
GET: https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=5.1
此API返回具有许多属性的JSON对象。在Jenkins API中,我们有一项规定只能过滤所需的属性。 Azure Devops API中有类似的方法吗?
根据文档https://docs.microsoft.com/en-us/rest/api/azure/devops/build/builds/get?view=azure-devops-rest-5.1
,我尝试使用propertyFilter
,但没有帮助我。
任何帮助或指针都会有用。
答案 0 :(得分:1)
从DevOps返回的JSON看起来非常像这样:
{
"count": 1000,
"value": [
{
"id": ,
"buildNumber": "",
"status": "",
"result": "",
"queueTime": "",
"startTime": "",
"finishTime": "",
"url": "",
"definition": {
"drafts": [
],
"id": ,
"name": "",
"url": "",
"uri": "",
"path": "",
"type": "",
"queueStatus": "",
"revision": ,
"project": {
"id": "",
"name": "<NAMEOFYOURPROJECT>",
"url": "",
"state": "",
"revision": ,
"visibility": "",
"lastUpdateTime": ""
}
},
"buildNumberRevision": 2,
"project": {
"id": "",
"name": "<NAMEOFYOURPROJECT>",
"url": "",
"state": "",
"revision": ,
"visibility": "",
"lastUpdateTime": "2"
},
...
您要过滤的关键字是project/name
。
您要过滤的project/name
的ODATA查询字符串如下所示:
https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=5.1&$filter=startswith(project/name,'<NAMEOFYOURPROJECT>')
答案 1 :(得分:0)
URI参数中的properties
查询可能不是我们认为的返回响应json的属性。可能是返回的构建结果的属性properties
中的properties。
作为解决方法,您可以编写脚本以从返回的生成结果中过滤所需的属性。请检查以下Powershell脚本中的示例:
$url ="https://dev.azure.com/{OGR}/{PROJ}/_apis/build/builds?`$top=5&api-version=5.1"
$PAT="PAT"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($PAT)"))
$result = Invoke-RestMethod -Uri $murl -Headers @{authorization = "Basic $base64AuthInfo"} -Method get
# filter the requested properties from the result
$requiredProperties = $result.value | select {$_.project.name}, {$_.definition.name}, id, buildNumber
$requiredProperties
以上脚本获得前5个构建的结果,然后使用脚本($result.value | select {$_.project.name}, {$_.definition.name}, id, buildNumber
)选择所需的属性。您将看到以下屏幕截图所示的选定属性:
希望上面有帮助!