在我的 Azure DevOps 构建流水线中,“发布构件”任务中是否可以有条件地设置构件名称?

5
我想知道在Azure DevOps的构建管道"发布构件"任务中,是否可以有条件地设置我的构建成果物名称? 我希望根据输入到我的构建管道的不同变量,生产不同的成果物。例如,基于输入管道变量,我想要生成三种构建成果物(“红色”,“蓝色”,“绿色”)。是否可以根据输入变量在我的“发布构件”任务中指定正在生成的成果物,或者直接生成三个构建管道会更容易/更好?

什么是“输入管道变量”?为什么不将变量放在工件名称中? - Shayki Abramczyk
2个回答

9
在我的 Azure DevOps 构建管道的“发布工件”任务中,是否可以有条件地设置工件名称?
恐怕目前没有现成的方法可以这样做。如果您想有条件地设置工件名称,我们必须在管道中使用嵌套变量。
然而,目前,像 `$(CustomArtifactName_$(Build.SourceBranchName))` 这样的嵌套变量的值还不支持在构建管道中使用。
作为解决方法,您可以添加一个“运行内联 PowerShell”任务,根据输入管道变量设置变量。
在我的实现中,我将 `Build_SourceBranchName` 作为输入管道变量。然后我在“内联 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"
     }

然后在发布生成的工件任务中,我将ArtifactName设置为drop-$(CustomArtifactName)

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

希望这可以帮助你。
enter image description here
(注意:保留了HTML标签)

9月21日仍不支持? - Emer
仍然在6月23日之前无法正常工作。 - Erik K

0

如果您在Linux上运行任务,这是bash版本。 NAME是一个自定义变量,其值使用预定义变量。

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

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