AXM*_*MIM 2 azure-devops azure-pipelines
我正在自动化 nuget 包的部署。
它工作正常,只是我无法按照我想要的方式设置 prelease 包。
有两个分支触发构建。
当构建由 master 分支触发时,我想发布一个常规的 nuget 包。
当测试分支触发构建时,我想发布一个预发布包。
为了做到这一点,我需要添加-beta到 nuget 包版本号。所以我把Automatic package versioningfromuse build number改为use an environment variable.
请参阅以下 img :

起初它抱怨变量说No value was found for the provided environment variable,但我通过删除$(). 但是现在我仍然卡住了,因为我找不到用Build.BuilderNumberand设置变量的方法-beta。我可以复制构建并让每个构建触发器用于自己的分支,但我宁愿只有一个构建可以处理来自两个分支的构建。
所以现在我正在考虑将设置use build number更改回并更改在构建选项卡options中设置构建编号的表达式。但是,即使在那里我也无法使用条件表达式Build.SourceBranch来添加或不添加-beta.
Chris McKenzie 似乎在这里遇到了类似的问题,并用 powershell 解决了它。不幸的是,我不知道 powershell 并且无法理解,因为脚本对于我需要的来说似乎太大了。我仍然相信他们对 powershell 的希望。因此,我将朝那个方向寻找以实现我的条件构建号。
这个问题很长,所以我用粗体设置了它的关键元素。
我在哪里以及如何在源分支上放置条件以-beta附加到 BuildNumber 并用作 nuget 包版本?
您可以通过添加 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"
}
Run Code Online (Sandbox Code Playgroud)
现在在 NuGet 包 setp 中,包版本将是$(Build.BuildNumber)如果分支是master; 和包的版本将是$(Build.BuildNumber)-beta如果分支test。
| 归档时间: |
|
| 查看次数: |
384 次 |
| 最近记录: |