如何在azure devops中将变量从一个管道传递到另一个管道



我配置了两个管道(管道A和管道B(用于构建和发布,管道A触发管道B进行部署。

我在管道A上定义了变量,并需要它们在管道B上用于部署。有可能在这两条管道之间通过它们吗?。

任何线索都将不胜感激。

您可以用于该变量组。这里有关于变量组的文档。

使用变量组来存储要控制的值,并使其在多个管道中可用。您还可以使用变量组来存储机密和其他可能需要传递到YAML管道中的值。变量组是在"管道"下的"库"页面中定义和管理的。

您需要在两个管道中声明相同的变量:

variables:
- group: my-variable-group

例如,如果你想更新一个管道中的变量,并在第二秒内获得更新后的值,你可以使用Azure CLI

az pipelines variable-group variable update --group-id
--name
[--detect {false, true}]
[--new-name]
[--org]
[--project]
[--prompt-value {false, true}]
[--secret {false, true}]
[--value]

您应该从Azure CLI任务调用此命令

- task: AzureCLI@2
displayName: Azure CLI
inputs:
azureSubscription: <Name of the Azure Resource Manager service connection>
scriptType: ps
scriptLocation: inlineScript
inlineScript: |
az --version
az pipelines variable-group --group-id value-of-group-id --name some-name --org your-org --project your-project --value some-value

如果你想触发一个又一个管道,你可以使用管道资源:

resources:
pipelines:
- pipeline: securitylib   # Name of the pipeline resource
source: security-lib-ci # Name of the pipeline referenced by the pipeline resource
trigger: 
branches:
- releases/*
- master

正如Krzysztof Madej所指出的,变量组将有助于在构建和发布管道之间共享静态值

您需要的是一种将变量从一个管道传递到另一个管道的方法。恐怕目前还没有正式的方式来做到这一点。

作为一种变通方法,您可以更新变量组中变量的值。有多种方法可以处理此问题,Rest API、powershell、第三方扩展。详细方法请参阅此问题的答案:如何使用Azure Devops构建定义增加/更新变量组值?

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

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

如何在azure devops 中将变量从一个管道传递到另一个管道

您可以在发布管道中设置一些默认变量,然后添加一个内联powershell任务来调用REST API(定义-更新(,以使用来自构建管道的值更新构建管道中发布定义变量的值。

PUT https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions?api-version=5.0

现在,我们可以在发布管道中使用来自多个管道的值。

请查看我以前的帖子以了解更多详细信息。

注意:不要忘记使用REST API将那些更改的变量恢复为默认值,这样我们下次就可以使用它了。

最新更新