azure-devops - 是否可以枚举在队列时间提供给 TFS vNext 构建的所有构建变量?
问题描述
我在排队时提供一个变量:
此变量未在构建定义变量中定义:
当构建运行时,变量作为ABC
环境变量公开。因此,如果构建步骤知道期望一个变量abc
,那么它可以获得它的值。
但是,如果构建步骤需要枚举在队列时传递的所有变量怎么办?除了使用特殊的命名约定之外,这可能吗?
解决方案
您可以结合使用Build-Builds和Builds-Definition API 在 PowerShell 任务中执行此操作。您可以将其作为执行构建中的一个步骤来执行。
$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
为您的令牌或管道中的系统访问令牌。
推荐阅读
- php - laravel 资源函数模型对象实例参数
- c++ - C++ set_difference 方法未按预期工作
- linux - 将文本中的某行替换为另一个文本中的某行
- ios - iOS上的Ionic InAppBrowser加载白色空白屏幕错误
- azure - 用于获取指标统计信息的 SDK
- angularjs - 如何知道当前 $formatters 操作正在针对哪个模型属性运行?
- c++ - (C++) 修改了常量引用?
- oauth-2.0 - 如何在 OpenID Connect 中使用访问令牌进行单点登录?
- javascript - 为什么 jquery 和 javascript 模糊事件无限循环
- javascript - 拆分后如何分配整数值给el的某些孩子?