我当前使用此处记录的管道 REST 端点来创建管道并将其与 YAML 文件关联,但文档中没有用于添加变量的设置。
作为参考,我正在寻找的设置是您在门户 UI 中添加的设置:
我不打算设置可以使用分布式任务端点完成的变量组这里,也不打算将它们添加到管道运行或构建定义,这些定义也有记录的可用端点这里和这里。
我只想将它们添加到管道本身,以便与分支签入或手动运行相关的触发器可以使用它们。
除非我没有正确使用它们,否则提到的这些端点都无法为我解决问题,而且我在文档中没有看到任何其他选项。
我确实认为
Run Pipeline
休息 API 有帮助(链接)。 $RunPipelineVariables
的作用与您在 UI 中运行管道时传递的变量相同。
下面的代码我已经使用了很长时间。效果很好。
[CmdletBinding()]
param (
[Parameter(Mandatory)]
[string]$OrganizationName,
[Parameter(Mandatory)]
[string]$ProjectName,
[Parameter(Mandatory)]
[string]$PipelineId,
[Parameter(Mandatory)]
[string]$BranchName,
[Parameter(Mandatory)]
[hashtable]$RunPipelineVariables,
[Parameter(Mandatory)]
[hashtable]$Headers
)
$uri = "https://dev.azure.com/{0}/{1}/_apis/pipelines/{2}/runs?api-version=7.0" -f $organizationName, $ProjectName, $PipelineId
$body = @{
resources = @{
repositories = @{
self = @{
refName = "refs/heads/" + $BranchName
}
}
}
variables = $RunPipelineVariables
} | ConvertTo-Json -Depth 10
Invoke-RestMethod -Uri $uri -Method 'Post' -ContentType 'application/json' -Headers $headers -Body $body
一个简单的获取 header 的代码可以帮助你测试。
[CmdletBinding()]
param (
[Parameter()]
[string]$UserName,
[string]$PersonalAccessToken
)
$basicAuth = ("{0}:{1}" -f $UserName, $PersonalAccessToken)
$basicAuth = [System.Text.Encoding]::UTF8.GetBytes($basicAuth)
$basicAuth = [System.Convert]::ToBase64String($basicAuth)
$headers = @{Authorization = ("Basic {0}" -f $basicAuth) }
return $headers