我们的目标是在Azure管道的发布定义中对npm和NuGet包进行自动版本控制
截至目前,我们正在使用基于rev值的标记化任务,我们替换nuspec和package.json文件中的版本号。所以我们得到像1.0.1,1.0.2 ......这样的版本号,以及在发布定义中实现的自动版本控制
但问题是,每当发布失败时,我们将丢失这些数字作为我们的版本号,因为rev值正在增加
示例:如果我发布的工件版本是1.0.1 ..要为我发布的下一个版本是1.0.2
但是如果1.0.2版本失败并且如果1.0.3成功,我们在这里获得的发布号为1.0.3,最终用户缺少1.0.2
现在我们需要帮助来根据上次成功发布来增加我的版本号,或者根据成功发布重置rev值,或者获取已发布的工件版本并增加该数量
或者,完成此任务的任何其他最佳实践都会有所帮助。
先感谢您。
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
设置为仅当前一个任务失败时:
要查看可用于构建和释放管道的变量,请查看以下页面: - Build variables - Release variables。
以下是用于修改build.updatebuildnumber
的powershell脚本:
$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)
仍会根据上次失败的构建结果而增加:
作为解决方法,我们可以为nuget包版本设置一个值,例如1.0.0。并且,当我们成功构建/发布时,添加Inline Powershell任务以将版本的值每次增加一。在构建/发布失败时,不要执行Inline Powershell任务。
希望这可以帮助。