【发布时间】:2015-09-25 09:50:44
【问题描述】:
在我的构建步骤中,我需要提供 TFS 修订号作为参数。我知道有一个变量 $(Build.SourceVersion) 但它以“CS”前缀返回它,例如"CS1234"
有没有一种简单的方法可以删除“CS”前缀?有内置的字符串函数吗?
谢谢
【问题讨论】:
标签: tfs tfsbuild azure-devops
在我的构建步骤中,我需要提供 TFS 修订号作为参数。我知道有一个变量 $(Build.SourceVersion) 但它以“CS”前缀返回它,例如"CS1234"
有没有一种简单的方法可以删除“CS”前缀?有内置的字符串函数吗?
谢谢
【问题讨论】:
标签: tfs tfsbuild azure-devops
我不知道任何用于格式化该字符串的内置函数 - 您必须在脚本中的某个地方执行此操作。请注意,如果您在构建定义的 Build Number Format 字段中指定 $(Build.SourceVersion) 变量,它会返回空字符串。 This thread 可能会为您提供更多详细信息。
【讨论】:
没有内置方法。变更集号和修订号也不是一回事。如果您使用的是 GIT 存储库,您将在 $(Build.SourceVersion) 中获得 COMMIT ID。
您可以使用 PowerShell 剥离该部分。以下行应为您提供数字部分。
[string]$version = ($Env:BUILD_SOURCEVERSION -replace'\D+(\d+)','$1')
【讨论】:
除了@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。
【讨论】: