Azure 管道根据条件设置任务的显示名称

Azure pipeline set displayname of task based on condition

在构建管道中,我有一个使用 powershell 脚本的工作,它基于这样的变量设置应用程序名称:

$applicationName = If ('$(configuration)' -eq 'Release') { 'Appname' } Else { 'Appname-Test' }
Write-Host "##vso[task.setvariable variable=applicationName]$applicationName"

我尝试将 PublishBuildArtifacts@1 变量的显示名称设置为这样的变量:

  - task: PublishBuildArtifacts@1        
    displayName: $[variables.applicationName] #  runtime variable

但这字面上显示 $[variables.applicationName] 而不是变量值。如何根据变量更改任务的显示名称?

目前看来这不可能。在我发现的两个问题中,他们将此描述为功能请求。

https://github.com/MicrosoftDocs/azure-devops-docs/issues/2327

https://github.com/microsoft/azure-pipelines-yaml/issues/45

您可以这样使用变量:$(variableName)。例如:

pool:
  vmImage: 'windows-latest'

variables:
  test: "SomeValue"

steps:
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: 'Write-Host "Hello World"'
  displayName: "The variable $(test)"

结果是:

我认为 ${{..}} 是正确的选择。您在编译时知道 configuration,因此您可以在编译时创建应用程序名称。

variables:
  ${{ if eq(variables.configuration, 'Release') }}:
    applicationName: 'Appname'
  ${{ if ne(variables.configuration, 'Release') }}:
    applicationName: 'Appname-Test'
  - task: PublishBuildArtifacts@1        
    displayName: ${{ variables.applicationName }}