未评估 Azure Pipelines 合并

Azure Pipelines coalesce not being evaluated

我有要评估的模板 coalesce(${{ parameters.pipeline }}, $(System.DefinitionId))

据我所知,这是正确的语法:

  - task: DownloadBuildArtifacts@0
    inputs:
      buildType: 'specific'
      project: '$(System.TeamProjectId)'
      pipeline: $[ coalesce(${{ parameters.pipeline }}, $(System.DefinitionId)) ]
      buildVersionToDownload: latestFromBranch
      branchName: $[ coalesce(${{ parameters.branchName }}, $(Build.SourceBranch)) ]
      allowPartiallySucceededBuilds: true
      downloadType: 'single'
      downloadPath: '$(Pipeline.Workspace)'
      artifactName: ${{ parameters.artifact }}

但是,当我 运行 这个时,我得到这个错误:

Definition name $[ coalesce(141, 342) ] didn't correspond to a valid definition

认为 这可能意味着它没有计算表达式并使用文字字符串 '$[ coalesce(141, 342) ]'.

好像Build.DefinitionId只有运行的时候才有,不然我就把参数默认设置成${{ Build.DefinitionId }},直接设置pipeline: ${{ parameters.pipeline }}.

我在 coalesce() 的内部和外部使用 $[ ]${{ }}$( ) 语法尝试了十几种不同的变体。 None 其中有效,但这个是最接近的,因为它实际上正确地替换了变量。

有什么想法吗?

事实证明,我需要将表达式放在作业的 variables 中,并使用 variables['System.DefinitionId'] 而不是 $( ) 语法。

- job: #...
  variables:
    pipeline: $[ coalesce(${{ parameters.pipeline }}, variables['System.DefinitionId']) ]
    branchName: $[ coalesce(${{ parameters.branchName }}, variables['Build.SourceBranch']) ]
  steps:
  # ...
  - task: DownlaodBuildArtifact@0
    inputs:
      # ...
      pipeline: $(pipeline)
      branchName: $(branchName)