Как развернуть все свойства в возвращенном определении выпуска - PullRequest
0 голосов
/ 25 сентября 2018

В нашей архитектуре Azure DevOps используется конвейер с одним выпуском для обновления и запуска других конвейеров.Перед тем, как запущенные конвейеры запускают выпуск, конвейер "kicker" обновляет определение выпуска конвейера "kickee".У меня есть только имя конвейера «kickee», а не ID, поэтому, чтобы получить конвейер для обновления, мы вызываем API, задокументированный по адресу:

https://docs.microsoft.com/en-us/rest/api/azure/devops/release/Definitions/List?view=azure-devops-rest-5.0#releasedefinitionexpands

Поскольку нам нужноЧтобы изменить некоторые аспекты определения версии, мне нужно использовать параметр $ expand , чтобы расширить ряд свойств, которые будут обновляться (переменные, артефакты, среды и т. д.).Документация, кажется, указывает, что несколько свойств могут быть расширены, но неясно, как это сделать.Это какой-то список, передаваемый в параметр, и если да, то, что разделяет каждый список?Ожидается ли, что параметр указан несколько раз (что, я думаю, допустимо в соответствии с Как передать несколько параметров в строку запроса )?Другие варианты?

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Вы разделяете свойства с помощью ,.

Например:

https://vsrm.dev.azure.com/{your-account}/{your-project}/_apis/release/definitions?$expand=Environments,Artifacts&api-version=5.0-preview.3

В результате вы получите Environments и Artifacts:

         "environments": [
            {
               "id": 1,
               "name": "Environment 1",
               "rank": 1,
               "owner": {
                  "displayName": "Shayki Abramczyk",
                  "url": "https://app.vssps.visualstudio.com/xxxxxxx-7cea-4070-bdad-0e1f6e0bc9e7/_apis/Identities/7a9a9b44-a2f1-6dfd-a7f6-e49cafde66b0",
                  "_links": {
                     "avatar": {
                        "href": "https://dev.azure.com/shaykia/_apis/GraphProfile/MemberAvatars/msa.xxxYTliNDQtYTJmMS03ZGZkLWE3ZjYtZTQ5Y2FmZGU2NmIw"
                     }
                  },
                  "id": "xxxxx-a2f1-6dfd-a7f6-e49cafde66b0",
                  "uniqueName": "xxxxx@gmail.com",
                  "imageUrl": "https://dev.azure.com/shaykia/_api/_common/identityImage?id=xxxxx-a2f1-6dfd-a7f6-e49cafde66b0",
                  "descriptor": "msa.N2E5YTliNDQtYTJmMS03ZGZkLWE3ZjYtZTQ5Y2FmZGU2NmIw"
               },
               "variableGroups": [],
               "schedules": [],
               "currentRelease": {
                  "id": 7,
                  "url": "https://vsrm.dev.azure.com/shaykia/xxxxx-b891-4fe5-b2fe-9b9a19a1d1af/_apis/Release/releases/7",
                  "_links": {}
               },
               "retentionPolicy": {
                  "daysToKeep": 30,
                  "releasesToKeep": 3,
                  "retainBuild": true
               },
               "properties": {},
               "preDeploymentGates": {
                  "id": 0,
                  "gatesOptions": null,
                  "gates": []
               },
               "postDeploymentGates": {
                  "id": 0,
                  "gatesOptions": null,
                  "gates": []
               },
               "environmentTriggers": [],
               "badgeUrl": "https://vsrm.dev.azure.com/shaykia/_apis/public/Release/badge/xxxxx5-b891-4fe5-b2fe-9b9a19a1d1af/1/1"
            }
         ],
         "artifacts": [
            {
               "sourceId": "xxxxx-b891-4fe5-b2fe-9b9a19a1d1af:2",
               "type": "Build",
               "alias": "MyProject",
               "definitionReference": {
                  "artifactSourceDefinitionUrl": {
                     "id": "https://dev.azure.com/shaykia/_permalink/_build/index?collectionId=xxxxxx-8c69-4ea0-8882-6340bf42f3b6&projectId=7fcdafd5-b891-4fe5-b2fe-9b9a19a1d1af&definitionId=2",
                     "name": ""
                  },
                  "defaultVersionBranch": {
                     "id": "",
                     "name": ""
                  },
                  "defaultVersionSpecific": {
                     "id": "",
                     "name": ""
                  },
                  "defaultVersionTags": {
                     "id": "",
                     "name": ""
                  },
                  "defaultVersionType": {
                     "id": "latestType",
                     "name": "Latest"
                  },
                  "definition": {
                     "id": "2",
                     "name": "MyBuild"
                  },
                  "project": {
                     "id": "xxxxxx-b891-4fe5-b2fe-9b9a19a1d1af",
                     "name": "SampleForVSTS"
                  }
               },
               "isPrimary": true,
               "isRetained": false
            }
         ],
         "releaseNameFormat": "Release-$(rev:r)",
         "retentionPolicy": {
            "daysToKeep": 30
         },
         "properties": {},
         "id": 1,
         "name": "New Release Definition",
         "path": "\\",
         "projectReference": null,
         "url": "https://vsrm.dev.azure.com/shaykia/xxxxxx-b891-4fe5-b2fe-9b9a19a1d1af/_apis/Release/definitions/1",
         "_links": {
            "self": {
               "href": "https://vsrm.dev.azure.com/shaykia/xxxxxx-b891-4fe5-b2fe-9b9a19a1d1af/_apis/Release/definitions/1"
            },
            "web": {
               "href": "https://dev.azure.com/shaykia/xxxxxx-b891-4fe5-b2fe-9b9a19a1d1af/_release?definitionId=1"
            }
         }
      }
   ]
}
0 голосов
/ 25 сентября 2018

Я обошел проблему, используя API списков для получения идентификатора определения, а затем вызвал API get для получения полного содержимого конкретного определения выпуска.Это не идеально, если мне нужно обновить большое количество определений выпусков одновременно, но будет работать для моих нужд, так как мне нужно обновлять определения по одному за раз.

...