有条件的buildnumber以发布预发布nuget包?

时间:2018-02-07 23:25:29

标签: azure-devops azure-pipelines

我正在自动部署nuget包 它工作正常,除了我无法按照我想要的方式设置预发行包。

有两个分支触发构建。
当主分支触发构建时,我想发布一个常规的nuget包 当构建由测试分支触发时,我想发布一个预发布包。
为此,我需要将-beta添加到nuget包版本号。 所以我将Automatic package versioninguse build number更改为use an environment variable 见以下img: enter image description here

起初它抱怨变量说No value was found for the provided environment variable,但我通过删除$()解决了这个问题。但现在我仍然卡住了,因为我找不到用Build.BuilderNumber-beta设置变量的方法。我可以复制构建并为每个分支创建每个构建触发器,但我宁愿只有一个构建可以处理来自两个分支的构建

所以现在我正在考虑将设置更改回use build number并更改在构建的选项卡options中设置内部版本号的表达式。 但是,即便如此,我也无法在Build.SourceBranch上添加条件表达式来添加或不添加-beta 。 Chris McKenzie似乎遇到了类似的问题here并用powershell解决了这个问题。不幸的是,我不知道powershell并且无法理解,因为脚本似乎对我需要的东西来说太大了。仍然我相信他们是我的希望与powershell。所以我将在那个方向上实现我的条件构建号。

这个问题已经很长了,所以我把它的关键元素设置为粗体 我在哪里以及如何在源分支上添加条件以将-beta附加到BuildNumber并用作nuget包版本?

1 个答案:

答案 0 :(得分:2)

您可以通过添加PowerShell任务来实现它,以根据不同的分支更改变量$(PackageVersion)条件。

在NuGet打包任务之前,使用以下脚本添加 PowerShell任务

$branch1="test"
$branch2="master"
if ("$(Build.SourceBranchName)" -eq $branch1)
{
  echo "the build is on $branch1"
  Write-Host "##vso[task.setvariable variable=PackageVersion]$(Build.BuildNumber)-beta"
}
elseif ("$(Build.SourceBranchName)" -eq $branch2)
{
  echo "the build is on $branch2"
  Write-Host "##vso[task.setvariable variable=PackageVersion]$(Build.BuildNumber)"
}
else
{
  echo "it's either on $branch1 branch nor $branch2 branch"
}

现在在NuGet pack setp中,如果分支是$(Build.BuildNumber),则包版本将为master;如果分支是$(Build.BuildNumber)-beta,则包版本将为test