Как поставить в очередь новую сборку через Azure DevOps REST API, используя указанный c коммит? - PullRequest
0 голосов
/ 01 марта 2020

Мне известно, как обычно ставить в очередь сборку для Azure DevOps с использованием этого API REST: https://docs.microsoft.com/en-us/rest/api/azure/devops/build/builds/queue?view=azure-devops-rest-5.1. Я также вижу, что вы можете указать ветку в теле запроса для использования в новой сборке. Тем не менее, мне еще предстоит найти способ вызвать новую сборку для конкретного c коммита. На веб-сайте Azure Pipelines есть возможность инициировать новую сборку для указанной c ветви, тега или коммита, поэтому я предполагаю, что должен быть способ сделать это через REST API.

Кто-нибудь знает?

1 Ответ

1 голос
/ 01 марта 2020

Вы можете найти общий пример здесь: Как ОЧЕРЕДИТЬ новую сборку, используя VSTS REST API

Просто добавьте sourceVersion в тело с помощью commit id. Пример для PowerShell:

$org = "<ORG_NAME>"
$teamProject = "<TEAM_PROJECT_NAME>"
$user = ""
$token = "<PAT>" #https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&tabs=preview-page

$buildId = "BUILD_DEFINITION_ID"
$commitId = "COMMIT_ID"

$queueBuild = "https://dev.azure.com/$org/$teamProject/_apis/build/builds?api-version=5.1"

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

Write-Host $queueBuild

$body = '
{ 
        "definition": {
            "id": "buildId"
        },
        "sourceVersion" : "commitId"
}
'

$body = $body -replace "buildId", $buildId
$body = $body -replace "commitId", $commitId

$bodyJson=$body | ConvertFrom-Json
Write-Output $bodyJson
$bodyString=$bodyJson | ConvertTo-Json -Depth 100
Write-Output $bodyString

$result = Invoke-RestMethod -Uri $queueBuild -Method POST -ContentType "application/json" -Body $bodyString -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
...