未评估 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)
我有要评估的模板 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)