在Azure Pipelines中在UI中定义一个变量,并在YAML中使用这个变量值作为编译时变量

问题描述 投票:0回答:1

我在 UI 中定义了一个变量:

enter image description here

并且我想使用变量的值来包含名称与变量值类似的文件夹中的模板文件。

variables:
  - template: '../files/${{ variables.UIDefinedVariable }}/params.yml'
    parameters:
      Parameter1: ${{ parameters.Parameter1 }}

当我尝试运行管道时,它给出了文件“/files/params.yml”不可用的错误 - 这是因为

${{ variables.UIDefinedVariable }}
在编译时没有值,因此被替换为空字符串。

有什么方法可以确保

${{ variables.UIDefinedVariable }}
在编译时确实具有“FOLDER1”值,而不使用参数而不是变量?我在这里使用了错误类型的变量吗?

azure-devops azure-pipelines azure-pipelines-yaml
1个回答
0
投票

当您在 Pipeline run UI/Variable Group 中设置变量时,变量将在运行时展开。

但是模板化字段中使用的变量需要在编译时扩展。

因此变量:UIDefinedVariable 在编译时将显示空值。

有什么方法可以确保在编译时确实具有“FOLDER1”值而不使用参数而不是变量?

要解决这个问题,需要在YAML文件中定义变量值。

例如:

variables:
  - template: '../files/${{ variables.UIDefinedVariable }}/params.yml'
    parameters:
      Parameter1: ${{ parameters.Parameter1 }}
  - name: UIDefinedVariable
    value: FOLDER1

然后变量值将在编译时传递到模板字段。

© www.soinside.com 2019 - 2024. All rights reserved.