Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure管道使用带有排队变量的模板表达式_Azure_Variables_Time_Queue_Azure Pipelines - Fatal编程技术网

Azure管道使用带有排队变量的模板表达式

Azure管道使用带有排队变量的模板表达式,azure,variables,time,queue,azure-pipelines,Azure,Variables,Time,Queue,Azure Pipelines,我在azure中定义了YAML构建管道: variables: test: '${{ variables.Environment }}' pool: vmImage: 'ubuntu-latest' steps: - script: | echo $(test) displayName: 'Show test' 我使用定义为“abc”的环境变量将该管道排队: 我希望它能响应abc,但是abc被替换为无变量。环境似乎没有定义 稍后,我想根据环境变量加载不同的变量组,这就是

我在azure中定义了YAML构建管道:

variables:
  test: '${{ variables.Environment }}'

pool:
  vmImage: 'ubuntu-latest'

steps:
- script: |
    echo $(test)
  displayName: 'Show test'
我使用定义为“abc”的环境变量将该管道排队:

我希望它能
响应abc
,但是abc被替换为无变量。环境似乎没有定义

稍后,我想根据环境变量加载不同的变量组,这就是我不直接在脚本中回显$(环境)的原因。这只是一个简单的例子

我希望它能呼应abc,但是abc被什么都没有取代- 变量。环境似乎未定义

根据:

运行时发生在模板扩展之后。模板变量在编译时处理,并在运行时开始之前替换。当找不到替换值时,模板变量会自动合并为空字符串

因此,在您的示例中,
echo$(test)
只打印空字符串。原因队列变量用于运行时。为此,您可以考虑使用运行时的宏或运行时表达式。
test:$(环境)
test:$[variables.Environment]
在我这方面都很好

稍后,我想加载一个不同的变量组,具体取决于 环境变量,这就是我不回显$(环境)的原因 直接在脚本中。这只是一个简单的例子

正如我所知,根据动态
环境
变量链接不同的变量组还不受支持,以下是关于该主题的内容。在这种情况下,这是一个很好的例子

现在Azure Devops服务正在推出新功能,我认为它可以满足您的大部分需求。对于您来说,使用运行时参数而不是不支持的动态
Environment
变量可能是一个更好的选择

我对该选项的简单测试:

1.yaml中的内容:

parameters:
- name: group
  displayName: Group Name
  type: string
  default: TestGroup
  values:
  - TestGroup
  - Group2
  - Group3
  - Group4

variables:
- group: ${{ parameters.group }}

steps:
- script: |
    echo $(Name)
  displayName: 'Show group name'
2.我的变量组TestGroup:

3.单击运行管道:

4.管道运行良好,显示变量组中定义的变量:

希望有帮助:)

我希望它能呼应abc,但是abc被什么都没有取代- 变量。环境似乎未定义

根据:

运行时发生在模板扩展之后。模板变量在编译时处理,并在运行时开始之前替换。当找不到替换值时,模板变量会自动合并为空字符串

因此,在您的示例中,
echo$(test)
只打印空字符串。原因队列变量用于运行时。为此,您可以考虑使用运行时的宏或运行时表达式。
test:$(环境)
test:$[variables.Environment]
在我这方面都很好

稍后,我想加载一个不同的变量组,具体取决于 环境变量,这就是我不回显$(环境)的原因 直接在脚本中。这只是一个简单的例子

正如我所知,根据动态
环境
变量链接不同的变量组还不受支持,以下是关于该主题的内容。在这种情况下,这是一个很好的例子

现在Azure Devops服务正在推出新功能,我认为它可以满足您的大部分需求。对于您来说,使用运行时参数而不是不支持的动态
Environment
变量可能是一个更好的选择

我对该选项的简单测试:

1.yaml中的内容:

parameters:
- name: group
  displayName: Group Name
  type: string
  default: TestGroup
  values:
  - TestGroup
  - Group2
  - Group3
  - Group4

variables:
- group: ${{ parameters.group }}

steps:
- script: |
    echo $(Name)
  displayName: 'Show group name'
2.我的变量组TestGroup:

3.单击运行管道:

4.管道运行良好,显示变量组中定义的变量:


希望有帮助:)

此问题的一种变体:

TL;博士:

组变量在模板编译时似乎不可用,例如,当根据该组中的变量有条件地设置要运行的模板时,只有在管道中显式设置的变量才可用

长版本:

我有一组变量组;'Group NonProd'、“Group Prod”等。每个变量都包含具有不同值的变量“identifier”(“dev”、“Prod”,用于下面的示例)

我有一个主管道“main pipeline.yml”,其中有几个阶段,每个阶段对应于“identifier”的值,例如:

- stage: NonProd
  variables:
  - group: 'Group-NonProd' ## includes the variable 'identifier' with value "nonprod"
  jobs:
  - template: nonprod.yml
    parameters:
      identifier: $(identifier)
  - script: echo "environment is $(identifier)"

- stage: Prod
  variables:
  - group: 'Group-Prod' ## includes the variable 'identifier' with value "prod"
  jobs:
  - template: prod.yml
    parameters:
      identifier: $(identifier)
  - script: echo "environment is $(identifier)"
但是,当我运行管道时,参数“identifier”不会扩展到组变量“identifier”中的值-它是空的-我看到当我尝试在下面的条件逻辑中使用变量时(目的是使用此逻辑确定要调用的模板-请参阅注释行-并将该参数传递给它们):

上面的脚本总是使用第二个条件,因为结果总是“使用产品模板,环境为”(空白)

但奇怪的是,如果我在每个阶段都显式设置变量'identifier',它确实可以工作

e、 g.这项工作:

- stage: NonProd
  variables:
  - group: 'Group-NonProd'
  - name: identifier
    value: nonprod
  jobs:
  - template: nonprod.yml
    parameters:
      identifier: $(identifier)
  - script: echo "environment is ${{ parameters.identifier }}" 

此问题的一个变体:

TL;博士:

组变量在模板编译时似乎不可用,例如,当根据该组中的变量有条件地设置要运行的模板时,只有在管道中显式设置的变量才可用

长版本:

我有一组变量组;'Group NonProd'、“Group Prod”等。每个变量都包含具有不同值的变量“identifier”(“dev”、“Prod”,用于下面的示例)

我有一个主管道“main pipeline.yml”,其中有几个阶段,每个阶段对应于“identifier”的值,例如:

- stage: NonProd
  variables:
  - group: 'Group-NonProd' ## includes the variable 'identifier' with value "nonprod"
  jobs:
  - template: nonprod.yml
    parameters:
      identifier: $(identifier)
  - script: echo "environment is $(identifier)"

- stage: Prod
  variables:
  - group: 'Group-Prod' ## includes the variable 'identifier' with value "prod"
  jobs:
  - template: prod.yml
    parameters:
      identifier: $(identifier)
  - script: echo "environment is $(identifier)"
但是,当我运行管道时,参数“identifier”不会扩展到组变量“identifier”中的值-它是空的-我看到当我尝试在下面的条件逻辑中使用变量时(目的是使用此逻辑确定要调用的模板-请参阅注释行-并将该参数向下传递给