如何以特定数字启动vNext TFS 2015构建版本

时间:2016-01-07 17:48:34

标签: tfs tfsbuild asp.net-core

我正在使用TFS 2015的vNext构建系统。

我目前使用传统格式进行构建版本控制。 MAJOR.MINOR-rev.RevisionNumber。因此,如果我有Major 1,Minor 12的构建版本,那么当我开始时,构建版本看起来就像1.12-rev.1。我想知道是否有可能让构建版本从一个非一个数字开始,比如55.这样构建版本看起来像1.12-rev.55,然后像往常一样增加一个。 / p>

7 个答案:

答案 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 产品而被解雇(但很多人应该因为购买/强迫他们去不属于他们的地方而被解雇)。