我在队列时间提供了一个变量:
在构建定义变量中未定义该变量:
当构建运行时,该变量作为ABC
环境变量公开。因此,如果构建步骤知道期望变量abc
,则可以获取其值。
但是,如果构建步骤需要枚举队列时间传递的所有变量该怎么办?除了使用特殊的命名约定外,还有可能吗?
答案 0 :(得分:1)
您可以在PowerShell任务中使用Build-Builds和Builds-Definition 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
。