NPM与NuGet包自动版本控制

问题描述 投票:0回答:1

我们的目标是在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值,或者获取已发布的工件版本并增加该数量

或者,完成此任务的任何其他最佳实践都会有所帮助。

先感谢您。

release azure-pipelines-release-pipeline release-management auto-versioning
1个回答
0
投票

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设置为仅当前一个任务失败时:

enter image description here

要查看可用于构建和释放管道的变量,请查看以下页面: - 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)仍会根据上次失败的构建结果而增加:

enter image description here

作为解决方法,我们可以为nuget包版本设置一个值,例如1.0.0。并且,当我们成功构建/发布时,添加Inline Powershell任务以将版本的值每次增加一。在构建/发布失败时,不要执行Inline Powershell任务。

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.