每天运行的构建计数可用作修订号替换吗?

时间:2016-12-16 11:58:49

标签: tfs2015

到目前为止我正在使用

$(Build.DefinitionName)_1.0.$(Year:yy)$(DayOfYear).$(Rev:r)

作为我所有构建定义的内部版本号格式。

现在我有一个(个人)问题,当一个构建定义每天经常运行而另一个很少运行时,即使后一个运行最后一个,它的修订版数量比经常运行的构建定义要小得多很喜欢。

现在我想知道是否有一些变量保存了当天已经运行的构建总数的值,并以我的构建号格式而不是修订版使用该变量。

2 个答案:

答案 0 :(得分:1)

没有任何开箱即用的变量可以计算。您可以在构建定义中添加powershell脚本任务来计算当前的构建,并通过调用VSTS Rest API来更新构建号。以下是实现此功能的脚本(您需要在构建定义中启用“允许脚本访问OAuth令牌”选项以使用此脚本):

##Generate credential
$user = "any"

$pwd = $env:SYSTEM_ACCESSTOKEN

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$pwd)))

##Count build of today
$today = Get-Date

$collectionuri = $env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI

$project = $env:SYSTEM_TEAMPROJECT

$uri = $collectionuri + $project + '/_apis/build/builds?api-version=2.0&minFinishTime=' + $today.ToShortDateString()

$response = Invoke-RestMethod -Method Get -Uri $uri -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -ContentType application/json

$buildcount = $response.count

##Update build number
$number = $buildcount + 1

$buildnumber = 'xxx.xxx.xxx.' + $number

Write-Host "##vso[build.updatebuildnumber]$buildnumber"

答案 1 :(得分:-1)

您可以使用$(BuildId)代替$(Rev:r)