我正在azure管道中放入以下代码:
- ${{ if eq(variables.enableAddonVM, true) }}:
- template: ../task-templates/addonVM.yml
parameters:
serviceConnectionName: ${{ variables.serviceConnectionName }}
customerResourceGroup: $(resourceGroupName)
location: ${{ variables.location }}
以下是我的观察结果:
模板被跳过。我通过在它之前的任务中打印它来检查值。它显示为true。尽管如此,它还是被跳过了。
我还在模板旁边应用了条件,如下所示
模板:/任务模板/addonVM.yml
条件:但它还是失败了。我们无法在模板之后使用条件。
在删除条件后,我还检查了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)