如何使用 YAML 条件插入添加乘法变量

问题描述

我阅读了这份文件 https://docs.microsoft.com/zh-cn/azure/devops/pipelines/process/expressions?view=azure-devops#conditional-insertion 但不像文档中演示的那样,我需要添加三个条件相同的变量,如下所示:

name: arm_temp
resources:
   repositories:
   - repository: self
     type: git
variables:
  - ${{ if in(lower(coalesce(variables['ENV'],variables['Build.sourceBranchName'])),'release','prod') }}:
    - newEnv: 'Prod'
    - account: '$(ACCOUNT)'
    - password: '$(PASSWORD)'
  - ${{ if eq(lower(coalesce(variables['ENV'],'qa') }}:
    - newEnv: 'QA'
    - account: '$(ACCOUNT)'
    - password: '$(PASSWORD)'
  - resGroupName: ${{ format('RESGROUP-{0}',variables['newEnv']) }}

ACCOUNT、PASSWORD 和 ENV 是在 azure 构建管道中定义的变量 但在运行构建管道之前我总是遇到错误

错误通知是关于 if 条件下的行。

解决方法

从您的 Yaml 示例来看,Yaml 格式似乎存在一些问题。

您可以参考以下 YAML 示例:

variables:
  ${{ if in(lower(coalesce(variables['ENV'],variables['Build.SourceBranchName'])),'release','prod') }}: 
    newEnv: 'Prod'
    account: $(myaccount)
    password: $(mypassword)
  ${{ if eq(lower(coalesce(variables['ENV'],'qa') }}: 
    newEnv: 'QA'
    account: $(myaccount)
    password: $(mypassword)
  resGroupName: ${{ format('RESGROUP-{0}',variables['newEnv']) }}
pool:
   vmimage: windows-latest
steps:
- script: |
     echo $(newEnv)
     echo $(account)
     echo $(password)

变量:

enter image description here

结果:

enter image description here

注意:您需要更改变量名称 $(ACCOUNT) $(PASSWORD)。它们不能与 yaml($(account),$(password)) 中定义的变量同名。或者变量不能成功通过。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...