问题描述
我阅读了这份文件 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 构建管道中定义的变量 但在运行构建管道之前我总是遇到错误。
解决方法
从您的 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)
变量:
结果:
注意:您需要更改变量名称 $(ACCOUNT)
$(PASSWORD)
。它们不能与 yaml($(account),$(password)
) 中定义的变量同名。或者变量不能成功通过。