【问题标题】:Share variables across build pipelines in Azure devops在 Azure devops 中跨构建管道共享变量
【发布时间】:2020-06-13 09:24:58
【问题描述】:

我的 azure devops 项目中有 2 个构建管道,一个用于构建源代码,另一个用于 进行设置。 我希望将编译代码的第一个管道生成的内部版本号传递给创建设置文件的下一个管道,因为我希望设置文件采用相同的版本,所以我添加了一个变量组,其中包含一个名为 的变量sharedBuildCounter.

但是当我使用这样的日志命令(在 PowerShell 任务中使用)设置 sharedBuildCounter 在第一个管道中的内部版本号时:

Write-Host "##vso[task.setvariable variable=variable_name;]new_value"

该变量确实采用了新值,我可以使用另一行 PowerShell 任务输出新值:

Write-Host $(SharedBuildCounter)

当我运行构建设置的下一个管道时,我发现 sharedBuildCounter 被重新设置为默认的空值。

注意:我发现线程建议使用 API REST 调用来更改变量值,但在使用管道变量(不是变量组)的情况下,它似乎不包含特定的管道名称。

【问题讨论】:

    标签: azure-devops azure-pipelines azure-devops-rest-api


    【解决方案1】:

    变量组将有助于在构建和发布管道之间共享静态值

    您需要一种将变量从一个管道传递到另一个管道的方法。恐怕说这不是官方的方法。

    作为一种解决方法,您可以在变量组中更新变量的值。有多种方法可以处理这个问题,Rest API、powershell、3rd-party 扩展。详细方法请参考本题答案:How to Increase/Update Variable Group value using Azure Devops Build Definition?

    如果要获取管道中变量的值。由于您已使用日志记录命令来更新该变量。

    您需要使用Rest API 来获取特定的构建日志以获取相关信息。

    【讨论】:

    • 变量组将有助于在构建和发布管道之间共享静态值。您的意思是变量组只能在 UI 中手动更改吗?
    • @OmarBousbia 不,这不是我的意思。抱歉没有说得更清楚。您不能使用日志命令 task.setvariable 更改变量组中的变量(日志命令只能针对特定运行进行更改)。它不是动态的。换句话说,即使你改变了变量值,但它不会影响变量组中原来的变量值。您需要使用 Rest API 直接更新变量组,这意味着与特定的构建/发布管道无关。希望这更清楚。
    • 如何使用Rest API更新变量组,请看这个问题:stackoverflow.com/questions/56558143/…
    • 谢谢@Patricklu-msft 调用 REST api 是解决方案,但是对于变量组 id 有没有办法获得它,因为我使用新创建的项目和管道测试了其余调用只有一个变量组,所以我在 url 中将变量组 id 设置为 1?
    • 嗨 Omar,您可以通过使用这个 rest api -- Get variable groups 来获取变量组 ID。您将在 JSON 响应中看到项目中的所有变量组信息,例如组名、ID、变量..
    猜你喜欢
    • 1970-01-01
    • 2021-04-28
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 2021-11-23
    • 2020-01-30
    • 1970-01-01
    相关资源
    最近更新 更多