Как создать новую сборку или релиз, используя API и YAML - PullRequest
0 голосов
/ 20 февраля 2019

Я просто ищу направление, так как, возможно, API уже делает это, и я неправильно понимаю / не могу найти нужный ресурс.


Что я хотел бы сделать, эточтобы я мог вызывать API Azure-Devops для создания нового определения сборки для меня, когда я предоставляю ему все необходимые файлы yaml для каждого этапа.

Я ожидал, что конечная точка создания займет несколько основныхфрагменты информации для создания определения сборки / выпуска, а затем коллекция yaml-файлов для создания задач.

Я нашел Создайте свой первый конвейер и Api 5.0 BuildDefinition / Create однако ни один из них не упоминает о публикации определения yaml в API.Я ожидал гораздо меньше элементов в теле запроса, учитывая, что определения yaml содержат большую часть необходимой информации.


Поддерживает ли API это?Будет ли это когда-нибудь поддерживать?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Для Rest Api с yaml нет документов, но если вы попытаетесь получить существующее определение yaml, вы встретите следующий пример:

enter image description here

Так что, если вы хотите редактировать процесс, вы должны отредактировать существующий файл yaml.Если вы хотите создать / клонировать существующее определение сборки, вы можете попробовать создать / клонировать файл yaml и опубликовать запрос ( Определения - Создать ) с участником процесса:

  • yamlFilename =путь к файлу yaml в хранилище
  • type = 2

Этот пример PowerShell для клонирования определения сборки с помощью yaml:

$pat = '{personal access token}'
$base64AuthInfo = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":$pat"))

$uri = 'https://dev.azure.com/{organization}/{team_project}/_apis/build/definitions/{buil_id}?api-version=5.0'

$result = Invoke-RestMethod -Method Get -Uri $uri -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -ErrorAction Stop

$body = $result | ConvertTo-Json -Depth 7

$existingyaml = '"yamlFilename":  "{path to yaml for existing buildef}"'
$newyaml = '"yamlFilename":  "{path to new yaml}"'
$buildname = '"name":  "{existing build name}"'
$newbuildname = '"name":  "{new build name}"'
$body = $body.Replace($existingyaml, $newyaml)
$body = $body.Replace($buildname, $newbuildname)


$Uri = "https://dev.azure.com/{organization}/{team_project}/_apis/build/definitions?api-version=5.0"

$newBuildDef = Invoke-RestMethod -Uri $Uri -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method Post -Body $body -ContentType "application/json" -ErrorAction Stop  
0 голосов
/ 20 февраля 2019

Да, вы правы, вы можете получить сборку с помощью API и изменить переменные, это должно работать.

Если вам нужно только изменить переменные, вы можете использовать группа переменных для хранения значений, затем вы можете получить группу переменных и изменить значения переменных с помощью Группы переменных api .

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