NPM 与 NuGet 包自动版本控制
恐怕没有这种方法可以直接完成这项任务。因为$(Rev:.r)
是这一天的内部版本号。用于$(Rev:.r)
确保每个完成的构建都有一个唯一的名称。构建完成后,如果构建编号中没有其他任何内容发生变化,则 Rev 整数值将增加 1。该值存储在数据库中。
作为测试,我创建了一个Inline Powershell
任务来在构建/发布任务失败时修改值。
我使用 powershell 脚本Write-Host "##vso[build.updatebuildnumber]$newVersionNumber"
来更新build.updatebuildnumber
(我build.updatebuildnumber
用作 nuget 包版本。)并将选项设置Run this task
为Only when a previous task has failed:
![在此处输入图像描述](https://i.stack.imgur.com/3r6pe.png)
要查看可用于构建和发布管道的变量,请查看以下页面: -构建变量-发布变量。
以下是修改的powershell脚本build.updatebuildnumber
:
$vstsCurrentVersionNumber = $Env:BUILD_BUILDNUMBER
$currentVersionNumber = $vstsCurrentVersionNumber.Split(".")
$revisionNumber = $currentVersionNumber[3]
$newRevisionNumber = [int]$revisionNumber -1
$newVersionNumber = $currentVersionNumber[0] + "." +
$currentVersionNumber[1] + "." + $currentVersionNumber[2] + "." +
$newRevisionNumber
$env:VersionNumber = $newVersionNumber
Write-Host "Update Build Number To: $newVersionNumber"
Write-Host "##vso[build.updatebuildnumber]$newVersionNumber"
事实上,如果构建/发布任务失败,构建号将在此构建中被修改。
但是,当我们下次执行构建/发布时,buildnumber/$(Rev:.r)
仍然会根据上次失败的构建结果增加:
![在此处输入图像描述](https://i.stack.imgur.com/nUZCo.png)
作为解决方法,我们可以为 nuget 包版本设置一个值,例如 1.0.0。当我们成功构建/发布时,添加一个 Inline Powershell 任务,每次将版本的值增加一。构建/发布失败时不要执行 Inline Powershell 任务。
希望这可以帮助。