【发布时间】:2014-09-18 12:41:58
【问题描述】:
我正在尝试遵循 this article 的一些指导,该指导描述了 NuGet 和 SemVer 最佳实践。
第 3 点指出我应该“在数字后缀中使用前导零来自动递增预发布”,但我正在努力研究如何在 TeamCity 中对 build.counter 参数进行零填充,以便我得到 0025 25.
有没有人有办法处理这个问题?
【问题讨论】:
标签: teamcity teamcity-8.0
我正在尝试遵循 this article 的一些指导,该指导描述了 NuGet 和 SemVer 最佳实践。
第 3 点指出我应该“在数字后缀中使用前导零来自动递增预发布”,但我正在努力研究如何在 TeamCity 中对 build.counter 参数进行零填充,以便我得到 0025 25.
有没有人有办法处理这个问题?
【问题讨论】:
标签: teamcity teamcity-8.0
你可以写一个类似的 powershell 脚本:
function Update-BuildNumber([string]$buildNumber)
{
$VersionComponents = $buildNumber.Split(".")
$buildNumber = ""
foreach($VersionComponent in $VersionComponents)
{
$index = [array]::IndexOf($VersionComponents, $VersionComponent)
if (($index + 1) -eq $VersionComponents.Count)
{
$buildNumber += "00" + $VersionComponent
}
else
{
$buildNumber += $VersionComponent + "."
}
}
Write-Output "##teamcity[buildNumber '$buildNumber']"
}
并从 Teamcity 构建步骤调用它并传递参数 %build.number% 类似:
Update-BuildNumber -buildNumber %build.number%
【讨论】:
"##teamcity[buildNumber '{0}']" -f ([Int32]%build.number%).ToString("0000") | Write-Host
如果我是你,我会使用GitVersion。它包括使用生成的版本号的LegacySemVerPadded 版本的选项。还有其他各种alternatives of the generated version number。
有一个 TeamCity Meta Runner 供它使用 here。
GitVersion 会根据存储库的当前状态为您计算新的语义版本号。
如果不这样做,是的,在 PowerShell 中的其他地方执行工作,然后使用 TeamCity Service Messages 更改 TeamCity 中的内部版本号。你可以找到一个 PowerShell 模块here。
这提供了一些帮助函数来做这件事。
【讨论】: