Как вернуть только указанные c свойства из Azure Devops REST API - PullRequest
2 голосов
/ 08 апреля 2020

Я пытаюсь получить все детали сборки для конкретного проекта в Azure devops, используя GET: https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=5.1

Этот API возвращает объект JSON со многими свойствами. В API Jenkins есть возможность фильтровать только необходимые свойства. Есть ли похожий способ в Azure Devops API?

Что касается документов https://docs.microsoft.com/en-us/rest/api/azure/devops/build/builds/get?view=azure-devops-rest-5.1, я пытался использовать propertyFilter, но не помог мне.

Любая помощь или указатели будут полезны.

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

JSON, которое возвращается из DevOps, выглядит примерно так:

{
  "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.

Строка запроса ODATA. для фильтрации project/name будет выглядеть так: https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=5.1&$filter=startswith(project/name,'<NAMEOFYOURPROJECT>')

0 голосов
/ 09 апреля 2020

Запрос properties в параметрах URI может не быть свойствами возвращенного ответа json, как мы думаем. Это могут быть свойства в свойстве 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

Надеюсь, что выше поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...