Azure devops 如何使用特定的提交通过Azure DevOps REST API对新构建进行排队?

Azure devops 如何使用特定的提交通过Azure DevOps REST API对新构建进行排队?,azure-devops,azure-pipelines,azure-devops-rest-api,Azure Devops,Azure Pipelines,Azure Devops Rest Api,我知道如何使用以下REST API对Azure DevOps的生成进行排队:。我还可以看到,您可以在请求主体中指定一个分支以用于新构建。然而,我还没有找到一种方法来为一个特定的提交触发一个新的构建。Azure Pipelines网站有一个选项可以触发特定分支、标记或提交的新构建,因此我认为一定有办法通过RESTAPI实现这一点 有人知道吗?您可以在这里找到一个通用示例: 只需将sourceVersion添加到带有commit id的正文中即可。PowerShell示例: $org = "<

我知道如何使用以下REST API对Azure DevOps的生成进行排队:。我还可以看到,您可以在请求主体中指定一个分支以用于新构建。然而,我还没有找到一种方法来为一个特定的提交触发一个新的构建。Azure Pipelines网站有一个选项可以触发特定分支、标记或提交的新构建,因此我认为一定有办法通过RESTAPI实现这一点


有人知道吗?

您可以在这里找到一个通用示例:

只需将
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)}
$org=“”
$teamProject=“”
$user=“”
$token=“”#https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&tabs=预览页面
$buildId=“构建定义\u ID”
$commitId=“提交ID”
$queueBuild=”https://dev.azure.com/$org/$teamProject/_api/build/builds?api版本=5.1“
$base64AuthInfo=[Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes((“{0}:{1}”-f$user,$token)))
写入主机$queueBuild
$body=
{ 
“定义”:{
“id”:“buildId”
},
“sourceVersion”:“commitId”
}
'
$body=$body-替换“buildId”、$buildId
$body=$body-替换“commitId”、$commitId
$bodyJson=$body | convertfromJSON
写入输出$bodyJson
$bodyString=$bodyJson |转换为Json-深度100
写入输出$bodyString
$result=Invoke RestMethod-Uri$queueBuild-Method POST-ContentType“application/json”-Body$bodyString-Headers@{Authorization=(“Basic{0}”-f$base64AuthInfo)}