我正在使用TFS 2015的vNext构建系统。
我目前使用传统格式进行构建版本控制。 MAJOR.MINOR-rev.RevisionNumber。因此,如果我有Major 1,Minor 12的构建版本,那么当我开始时,构建版本看起来就像1.12-rev.1。我想知道是否有可能让构建版本从一个非一个数字开始,比如55.这样构建版本看起来像1.12-rev.55,然后像往常一样增加一个。 / p>
答案 0 :(得分:4)
实际上,可以在vNext构建中实现这一点而不会破坏数据库。
有两个步骤。
首先,您需要使用以下内联脚本实现PowerShell构建步骤(作为构建的第一步):
#Set the BuildNumberOffset. (Change this to the difference between the TFS build number,
#and the number that your build needs.)
$BuildNumberOffset = 543
#Don't change
$BuildNumberParts = $($env:BUILD_BUILDNUMBER) -split '\.'
$TFSRevision = [int]$BuildNumberParts[$BuildNumberParts.Length-1]
$BuildNumberParts[$BuildNumberParts.Length-1] = ($TFSRevision + $BuildNumberOffset).ToString()
$BuildNumber = [string]::Join(".", $BuildNumberParts)
Write-Host "##vso[build.updatebuildnumber]$BuildNumber"
其次,在存储库选项卡的Label格式字段中,将标签格式设置为" $(Build.BuildNumber)"而不是" $(Build.DefinitionName)$(rev:.r)"。这很重要,这样您的标签就会与更新后的内部版本号相同。
答案 1 :(得分:2)
有一种方法可以做到这一点。它不漂亮,但它有效。
假设您有类似$(Major).$(Minor)-rev$(rev:.r)
要执行此操作,请构建一个将获得编号1.12-rev.1的构建。然后转到TFS数据库并进入名为tbl_Build
的表。找到您最后一次构建并将BuildNumberRevision
列中的值更改为54。
下一个发布的版本现在将是1.12-rev.55
答案 2 :(得分:1)
不幸的是,这是不可能的。
每个构建定义都有一个构建号格式字段,您可以使用某些宏来指示生成的构建号应该是什么样子。在这种格式中,我们使用$(Rev:.rr)
它从一开始。
什么是$(Rev:.rr)?
确保每个已完成的构建都具有唯一名称。什么时候构建 完成后,如果内部版本号中没有其他内容发生变化,则Rev 整数值加1。
来源:MSDN
此外,如果要生成不带增量的自定义内部版本号。 这是一个包含详细程序的博客:Generate custom build numbers in TFS Build vNext
答案 3 :(得分:0)
我们不能只以一个版本的格式手动设置它,即:
$(Major).$(Minor)-rev$(rev:.54)
然后再回到:
$(Major).$(Minor)-rev$(rev:.r)
没有尝试过,但如果它有效,它将在数据库中拯救黑客。
答案 4 :(得分:0)
@Steve Sims的Answer仍可与 TFS 2017 vNext 一起使用。非常感谢!
我只需要执行第一步“将脚本作为内置Powershell脚本添加到我的构建中”。感谢@PainElemental
在Option-Tab中使用此“内部版本号格式”即可:
$(BuildDefinitionName)_1.2.0$(rev:.r)
我没有用构建标记我的来源,所以我没有检查:
第二,在“存储库”选项卡的“标签格式”字段上,设置标签 格式为“ $(Build.BuildNumber)”,而不是 “ $(Build.DefinitionName)$(rev:.r)”。这很重要,因此您的 标签将与您更新后的内部版本号相同。
我认为,您可以在“高级” GetSources选项上编辑标签格式。 (通常是隐藏的)。
答案 5 :(得分:0)
您可以轻松地做到这一点,但前提是您将Git存储库与名为GitVersion的工具结合使用
这是一个很棒的工具,我经常将其与git repos一起使用。对于您的用例:当您拥有1.2.3版并且要跳至1.2.55版时,只需添加一个git标签'v1.2.55',它将从那里开始版本控制。 GitVersion复杂得多,功能更多,但这是功能之一。您不必弄乱特殊的PowerShell脚本或其他任何东西,它会读取您的git repo历史记录,而git标签会覆盖计算的版本控制。已经有一个名为GitVersion的TFS / VSTS / Azure Devops扩展,可以从同一开发人员那里很好地工作。
答案 6 :(得分:0)
这对我们来说也很痛苦,从现有的 CI 系统迁移到它自己的构建编号,我们需要构建编号从特定值开始递增。组织内不允许黑客入侵数据库,抵消似乎是一种障碍。
最后,我们使用 AutoIt 脚本来启动和停止构建,并使用 WebUI 删除构建结果并让它继续运行。不是很好,但它完成了工作。
需要调整屏幕分辨率等,也许还需要调整时间。使用 AutoIt Window Info 找到按钮位置,确保浏览器是全屏的(不是窗口化的)在设置更大的循环之前运行它几个循环以确保它健壮。
#include <AutoItConstants.au3>
;Increment TFS build count (Chrome browser buttons locations). Start from build result page.
For $i = 1 To 15 Step 1
ConsoleWrite ( "Loop " & $i & " of 5" & @CRLF )
Sleep(200)
MouseClick($MOUSE_CLICK_PRIMARY, 1800, 200, 2)
Sleep(500)
MouseClick($MOUSE_CLICK_PRIMARY, 1150, 881, 2)
Sleep(2000)
MouseClick($MOUSE_CLICK_PRIMARY, 1800, 200, 2)
Sleep(500)
MouseClick($MOUSE_CLICK_PRIMARY, 1055, 165, 2)
Sleep(10000)
Next
TFS/Devops 是一个非常不成熟的 CI 系统,它不是我们运行的补丁。不幸的是,公司政策要求我们转向 TFS,因为从来没有人因为购买 Microsoft 产品而被解雇(但很多人应该因为购买/强迫他们去不属于他们的地方而被解雇)。