是否可以在我的Azure DevOps构建管道“发布工件”任务中有条件地设置工件名称?

时间:2019-05-17 22:53:28

标签: azure-devops azure-pipelines azure-pipelines-build-task

我想知道是否可以在Azure DevOps构建管道“发布工件”任务中有条件地设置构建工件的名称?我想根据构建管道的输入生成不同的工件。说,基于输入管道变量,我想产生三个工件(“红色”,“蓝色”,“绿色”)之一。是否可以根据输入变量指定在“发布工件”任务中产生的工件,还是仅产生三个构建管道就容易/更好?

2 个答案:

答案 0 :(得分:1)

  

是否可以在我的Azure DevOps构建管道“发布工件”任务中有条件地设置工件名称?

恐怕没有这种现成的方法可以做到这一点。如果要有条件地设置工件名称,则必须在管道中使用嵌套变量。

但是,目前,构建管道中尚不支持嵌套变量(例如$(CustomArtifactName_$(Build.SourceBranchName))) )的值。

解决方法,您可以添加一个Run Inline Powershell任务以根据输入管道变量来设置变量。

在我这边,我使用Build_SourceBranchName作为输入管道变量。然后,在 Inline Powershell 任务中添加以下脚本:

- task: InlinePowershell@1
  displayName: 'Inline Powershell'
  inputs:
    Script:

     $branch = $Env:Build_SourceBranchName

     if ($branch -eq "TestA5")
     {
       Write-Host "##vso[task.setvariable variable=CustomArtifactName]Red"
     }
     else
     {
       Write-Host "##vso[task.setvariable variable=CustomArtifactName]Blue"
     }

然后在 Publish Build Artifacts (发布构建工件)任务中,将ArtifactName设置为drop-$(CustomArtifactName)

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: drop'
  inputs:
    ArtifactName: 'drop-$(CustomArtifactName)'

enter image description here

希望这会有所帮助。

答案 1 :(得分:0)

这是bash版本,以防您在Linux上运行任务。 NAME是使用预定义变量作为值的自定义变量。

trigger_model_version=RELEASE_ARTIFACTS_${NAME^^}_BUILDNUMBER
export version=${!trigger_model_version}
echo Deploying ${NAME}:${version}