Azure Pipeline模板参数条件赋值语法报错,咨询可行写法
Azure Pipeline模板参数条件赋值的正确写法
你遇到的报错是因为将if指令与裸字符串dev/prod混写,Azure Pipeline要求参数值要么是纯字符串,要么是完整的表达式指令,不允许把指令嵌在字符串中间拆分使用。
支持单行写法(修正后)
只需把整个条件逻辑包裹成一个完整的表达式,让environment的取值完全由表达式返回即可,修改后的代码如下:
- template: _task.generateresourcegroupname.yml parameters: environment: ${{ if and(eq(parameters.deployToDev, true), eq(parameters.deployToTest, false)) }} 'dev' ${{ else }} 'prod' rgVariableName: resourceGroupName appName: App2 appVersion: '01' filePath: '$(Build.SourcesDirectory)/Pipelines/scripts/GenerateResourceGroupName.ps1'
这里的核心是'dev'和'prod'作为表达式的一部分存在,整个environment的值就是一个完整的if-else表达式,没有额外的字符串拼接操作。
多行写法(可读性更优)
如果觉得单行表达式可读性较差,也可以采用多行条件块的方式赋值,逻辑更清晰:
- template: _task.generateresourcegroupname.yml parameters: ${{ if and(eq(parameters.deployToDev, true), eq(parameters.deployToTest, false)) }}: environment: 'dev' ${{ else }}: environment: 'prod' rgVariableName: resourceGroupName appName: App2 appVersion: '01' filePath: '$(Build.SourcesDirectory)/Pipelines/scripts/GenerateResourceGroupName.ps1'
两种写法均能正常生效,可根据实际需求选择。
内容的提问来源于stack exchange,提问作者Herald Gjura
相关产品推荐
相关产品推荐

