【问题标题】:Is it possible to enumerate all the build variables supplied at queue time to a TFS vNext build?是否可以枚举在队列时间提供给 TFS vNext 构建的所有构建变量?
【发布时间】:2019-03-14 04:08:18
【问题描述】:

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

此变量在构建定义变量中定义:

当构建运行时,变量被暴露为ABC 环境变量。因此,如果构建步骤知道需要一个变量 abc,那么它可以获得它的值。

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

【问题讨论】:

    标签: azure-devops


    【解决方案1】:

    您可以在 PowerShell 任务中使用 Build-BuildsBuilds-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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-13
      • 2011-10-28
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 2018-11-17
      相关资源
      最近更新 更多