如何仅从Azure Devops REST API返回特定属性

时间:2020-04-08 05:58:45

标签: azure api azure-devops

我正在尝试使用以下方法在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,但没有帮助我。

任何帮助或指针都会有用。

2 个答案:

答案 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)选择所需的属性。您将看到以下屏幕截图所示的选定属性:

enter image description here

希望上面有帮助!

相关问题