【问题标题】:How to set value of variable group variable in TFS Build如何在 TFS Build 中设置变量组变量的值
【发布时间】:2020-11-04 17:36:15
【问题描述】:

this thread 中讨论了 Azure Devops 构建中变量组变量的设置。 我的问题是是否还有一种方法可以通过 TFS 构建设置变量组变量的值。 具体来说:我想将构建管道的$(Rev:r) 变量的当前值存储在变量组中,以便在不同的构建管道中使用它。

【问题讨论】:

    标签: tfs build-pipeline


    【解决方案1】:

    我的问题是是否还有一种方法可以通过 TFS 构建设置变量组变量的值

    我们仍然可以使用Logging Command 通过 TFS 构建设置变量组变量的值:

    Write-Host "##vso[task.setvariable variable=testvar;]testvalue"
    

    但是,如果您想将构建管道的 $(Rev:r) 变量的当前值存储在变量组中以在 中使用它不同的构建管道,这里会有两个问题。

    第一个是变量$(Rev:r)不能在命令行或powershell任务中使用,因为冒号:不支持。这个变量$(Rev:r) 是由 Azure devops 专门定义的,我们不能在 azure devops 之外调用它。所以,我们不能在任务中使用$(Rev:r),比如:

    Write-Host "##vso[task.setvariable variable=testvar;]$(Rev:r)"
    

    为了解决这个问题,我们可以在构建管道的选项选项卡的内部版本号格式中设置这个变量$(Rev:r)

    现在,我们可以使用predefined variables Build.BuildNumber 来获取$(Rev:r) 的值。命令行或powershell任务支持变量Build.BuildNumber,我们可以使用它:

    Write-Host "##vso[task.setvariable variable=testvar;]$(Build.BuildNumber)"

    第二个问题是Logging Command设置的变量只能应用于当前代理环境,不会保存到任务组。所以它不能用于不同的构建管道。它仍然会使用我最初在任务组中设置的值,您可以检查任务组中的值,它没有被我们的 Logging 命令修改。

    要解决这个问题,我们需要使用 REST API 从网页更新任务组中的真实值:

    请查看the UPDATE3 answer in this thread了解更新任务组中值的详细步骤。

    所以,我们需要使用 REST API 和Build.BuildNumber 来实现您的请求。

    【讨论】:

    • 感谢您的帮助!我成功使用您的输入和 $env:SYSTEM_ACCESSTOKEN 作为 auth 标头。
    猜你喜欢
    • 2019-12-31
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    相关资源
    最近更新 更多