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

9

在构建流程中,我有一个作业采用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]而不是变量的值。我如何根据变量更改任务的显示名称?
4个回答

11
您可以这样使用变量:$(variableName)。例如:
pool:
  vmImage: 'windows-latest'

variables:
  test: "SomeValue"

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

结果是:

enter image description here


它只能与variables声明一起使用,但是当我尝试覆盖值(例如从“SomeValue”到“AnotherValue”)时,旧值会被显示。 - Matthias Herrmann
我在我的流水线中有两个作业。在第一个作业中,我使用PowerShell覆盖变量-请参见我问题中包含的代码。然后我尝试在第二个作业中将这个被覆盖的值用作显示名称。 - Matthias Herrmann
3
因为管道在运行时评估步骤名称,所以即使更改变量的值也不会影响步骤名称。 - Shayki Abramczyk
在模板文件中引用displayName变量时无法正常工作。对此有什么想法吗? - spottedmahn
这也适用于模板任务参数。例如:displayName: '构建 ${{parameters.published_zip_file_name}}' 参数在模板文件中定义。 - adeel41
显示剩余2条评论

5

根据其他答案中的示例,可能已经完成了这个。不确定它是否在我查看的本地版本中可用。每当您更改“答案”时,我将删除此内容。 - Matt

3
我认为${{..}}是正确的方法。你在编译时就知道了configuration,因此可以在编译时创建应用程序名称。
variables:
  ${{ if eq(variables.configuration, 'Release') }}:
    applicationName: 'Appname'
  ${{ if ne(variables.configuration, 'Release') }}:
    applicationName: 'Appname-Test'

  - task: PublishBuildArtifacts@1        
    displayName: ${{ variables.applicationName }}

请检查我的答案是否有其他选择。 - undefined

0
你可以使用下面的条件模板来更改displayName。
 - task: PublishBuildArtifacts@1
   ${{ if eq(variables.configuration, 'Release') }}:      
     displayName: Appname
   ${{ else }}:
     displayName: Appname-Test

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接