Yaml 变量不适用于使用变量的 dockerfile

Yaml Variable not working for dockerfile using variables

所以我在我的 YAML 中定义了以下变量条件

  ${{ if endsWith( variables['Build.SourceBranchName'], 'main' ) }}: 
    dFile: 'Dockerfile'
  ${{ if endsWith( variables['Build.SourceBranchName'], 'development' ) }}: 
    dFile: 'Development.Dockerfile'

然后我在这样的构建映像任务中使用它:

      - task: Docker@0
        displayName: 'Build an image'
        inputs:
          azureSubscription: 'Azure Registry'
          azureContainerRegistry: 'redacted'
          dockerFile: $[variables.dFile]
          imageName: '$(Build.Repository.Name)-$(build.sourceBranch):$(Build.BuildNumber)'
          includeLatestTag: true

但出于某种原因,这是我得到的输出:

##[error]Unhandled: No Docker file matching  /home/vsts/work/1/s/$[variables.dockerFile]  was found.

我也尝试了 '$(dFile)' 并得到了同样的错误

将变量定义为 name-value 对。

这是您的变量块的样子:

variables:
  - ${{ if endsWith( variables['Build.SourceBranchName'], 'main' ) }}:
      - name: dFile
        value: 'Dockerfile'

  - ${{ if endsWith( variables['Build.SourceBranchName'], 'development' ) }}:    
      - name: dFile
        value: 'Development.Dockerfile'