使用 Azure DevOps REST API 将变量添加到管道

问题描述 投票:0回答:1

我当前使用此处记录的管道 REST 端点来创建管道并将其与 YAML 文件关联,但文档中没有用于添加变量的设置。

作为参考,我正在寻找的设置是您在门户 UI 中添加的设置:

我不打算设置可以使用分布式任务端点完成的变量组这里,也不打算将它们添加到管道运行或构建定义,这些定义也有记录的可用端点这里这里

我只想将它们添加到管道本身,以便与分支签入或手动运行相关的触发器可以使用它们。

除非我没有正确使用它们,否则提到的这些端点都无法为我解决问题,而且我在文档中没有看到任何其他选项。

azure azure-devops azure-pipelines devops azure-devops-rest-api
1个回答
0
投票

我确实认为

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
© www.soinside.com 2019 - 2024. All rights reserved.