Azure devops 是否可以枚举在队列时提供给TFS vNext生成的所有生成变量?

Azure devops 是否可以枚举在队列时提供给TFS vNext生成的所有生成变量?,azure-devops,Azure Devops,我在排队时提供了一个变量: 此变量未在生成定义变量中定义: 当构建运行时,变量将作为环境变量公开。因此,如果构建步骤知道需要一个变量abc,那么它就可以得到它的值 但是,如果构建步骤需要枚举队列时传递的所有变量,该怎么办?除了使用特殊的命名约定之外,还可以吗?您可以在PowerShell任务中使用和API的组合来实现这一点。您可以将其作为执行构建中的一个步骤来执行 $uri = "https://dev.azure.com/{organization}/{project}/_apis/bui

我在排队时提供了一个变量:

此变量未在生成定义变量中定义:

当构建运行时,变量将作为环境变量公开。因此,如果构建步骤知道需要一个变量
abc
,那么它就可以得到它的值


但是,如果构建步骤需要枚举队列时传递的所有变量,该怎么办?除了使用特殊的命名约定之外,还可以吗?

您可以在PowerShell任务中使用和API的组合来实现这一点。您可以将其作为执行构建中的一个步骤来执行

$uri = "https://dev.azure.com/{organization}/{project}/_apis/build/definitions/{definitionId}"

$definitionParameters = Invoke-RestMethod -uri $uri -UseDefaultCredentials -Method Get |
    Select-Object -ExpandProperty variables

$uri = "https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}"

$buildParameters = Invoke-RestMethod -uri $uri -UseDefaultCredentials -Method Get |
    Select-Object -ExpandProperty parameters | 
    ConvertFrom-Json | 
    Get-Member -MemberType NoteProperty |
    Select-Object -ExpandProperty Name

foreach ($parameter in $buildParameters) {

    $found = $definitionParameters | 
        Get-Member -MemberType NoteProperty |
        Select-Object -ExpandProperty Name |
        Where-Object { $_ -eq $parameter}

    if (-not $found) {
        $parameter
    } 
}
所以一个包含参数a,B的构建定义和一个包含参数a,B,C的构建-这将打印C

我模拟了azuredevops URI,但在本地tfs2018实例上进行了测试

-UseDefaultCredentials
替换为您的令牌或管道中的系统访问令牌