繁体   English   中英

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

[英]If with variables not parameters in azure pipeline problem

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

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

以下是我的观察:

  1. 模板被跳过。 我通过在它之前的任务中打印它来检查值。 它是真实的。 它仍然被跳过。

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

    • 模板:../task-templates/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) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM