解决多个变量组中的Azure YAML管道重叠变量名称

时间:2020-10-20 16:35:09

标签: variables azure-devops yaml azure-pipelines

我们正在努力将经典Azure管道转换为YAML管道。尚不清楚的一件事是如何确保具有相同名称但含义不同的变量的两个不同的变量组不会互相踩踏。

例如,如果我有变量组vg1vg2,每个变量组的变量名为secretDataDestination,如何确保YAML中使用了正确的secretDataDestination管道?

一个更令人关注的示例是,如果我们最初有两个变量组而没有重叠的变量名,那么我们如何确保将新重叠的变量名添加到组中不会取代对变量是否符合最初的意图?

1 个答案:

答案 0 :(得分:0)

如果我有变量组vg1和vg2,每个变量组的变量名为secretDataDestination,如何确保YAML管道中使用了正确的secretDataDestination?

无论我们使用经典模式还是YAML,都不建议在不同变量组中定义具有相同名称的变量。因为当您在同一管道中引用包含相同变量名称的不同变量组时,就无法避免彼此相继。

当您在同一管道的不同变量组中使用相同的变量名时,就像Matt所说的那样,

“您可以在同一管道中引用多个变量组。如果 多个变量组包含相同的变量,变量组 您的YAML文件中最后包含的内容将设置变量的值。

variables:
- group: variable-group1
- group: variable-group2

这意味着稍后写入的变量组中的变量值将覆盖首先写入的变量组中的变量值

我想您已经知道这一点,所以您发布第二个问题。现在让我们转向第二个问题。

如果我们最初有两个没有重叠变量的变量组 名称,我们如何确保添加新重叠的变量名称 小组不能取代原来打算使用的变量?

实际上,Azure开发人员目前没有这样的功能或机制来智能地检测不同的变量组是否具有相同的变量名并给出提示。

我认为这是一个合理的要求,我在UserVoice网站上添加了您对此功能的请求,该网站是我们提供产品建议的主要论坛:

The ability to detect the same variable in a variable group

一种解决方法,最简单,最直接的方法是在“库”标签中打开管道链接的变量组,然后直接ctrl + F搜索存在相同的变量。

另一种方法是使用REST API Variablegroups - Get Variable Groups By Id获取所有变量,然后循环将与要输入的变量进行比较,以判断是否存在相同的变量。