VSO Build vNext - 获取TFS版本号

时间:2015-09-25 09:50:44

标签: tfs tfsbuild azure-devops

在我的构建步骤中,我需要提供TFS修订号作为参数。我知道有一个变量$(Build.SourceVersion),但它返回一个“CS”前缀,例如“CS1234”

是否有一种简单的方法可以删除“CS”前缀?任何内置的字符串函数?

由于

3 个答案:

答案 0 :(得分:1)

我不知道任何用于格式化该字符串的内置函数 - 您必须在某个地方的脚本中执行此操作。请注意,如果在构建定义的“构建号格式”字段中指定$(Build.SourceVersion)变量,则if exist变量将返回空字符串。 This thread可能会为您提供更多详细信息。

答案 1 :(得分:1)

没有构建方法。变更集编号和修订版号也不一样。如果您使用的是GIT存储库,您将在$(Build.SourceVersion)中获得 COMMIT ID

您可以使用PowerShell剥离该部分。下面的行应该给你数字部分。

[string]$version = ($Env:BUILD_SOURCEVERSION -replace'\D+(\d+)','$1')

答案 2 :(得分:0)

添加到@ cilerler的答案,我使用这个通用的Powershell脚本作为我的第一个VSTS构建步骤:

Param(
    [string] $SourceBranchName = $Env:BUILD_SOURCEBRANCHNAME,
    [string] $SourceVersion = $Env:BUILD_SOURCEVERSION
)

Write-Host "SourceBranchName = $SourceBranchName"
Write-Host "SourceVersion = $SourceVersion"

if ($SourceBranchName -eq "trunk"){
    $MajorMinor = "0.0"
}
else{
    $MajorMinor = $SourceBranchName
}

# Remove CS from changeset number
$Revision = ($SourceVersion -replace 'C','')

$BuildNumber = "$MajorMinor.$Revision.0"

Write-Host "Setting Build Number '$BuildNumber'"

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

请注意,它假定您的分支名称采用Major.Minor格式(例如1.4)或trunk

此外,似乎VSTS documentation错误,Build.SourceVersion变量的格式为C1226