如果在azure管道中有变量而不是参数的问题



我正在azure管道中放入以下代码:

- ${{ if eq(variables.enableAddonVM, true) }}:     
- template: ../task-templates/addonVM.yml
parameters:
serviceConnectionName: ${{ variables.serviceConnectionName }}
customerResourceGroup: $(resourceGroupName)
location: ${{ variables.location }} 

以下是我的观察结果:

  1. 模板被跳过。我通过在它之前的任务中打印它来检查值。它显示为true。尽管如此,它还是被跳过了。

  2. 我还在模板旁边应用了条件,如下所示

    • 模板:/任务模板/addonVM.yml

      条件:但它还是失败了。我们无法在模板之后使用条件

  3. 在删除条件后,我还检查了addonVM.yml。addonVM.yml运行正常。

所以,我的最后一个问题是如何在if条件中插入变量?有没有办法解决这个问题?

如果在azure管道问题中使用变量而不是参数

这取决于变量enableAddonVM在编译之前是否已经存在。

正如jessehouwing指出的那样,模板变量${{ variables.var }}是在编译时处理的

有关更多详细信息,请查看文档模板表达式语法。

因此,如果变量enableAddonVM是在上一个任务中生成的,则在编译时无法获取。这是因为这个变量是在运行时生成的。

要解决此问题,可以使用condition,如:

steps: 
- template: ../task-templates/addonVM.yml
parameters:
serviceConnectionName: ${{ variables.serviceConnectionName }}
customerResourceGroup: $(resourceGroupName)
location: ${{ variables.location }} 
condition: eq(variables.enableAddonVM, true) 

最新更新