如何在TeamCity中将构建计数器归零

如何在TeamCity中将构建计数器归零,teamcity,teamcity-8.0,Teamcity,Teamcity 8.0,我试图遵循一些指导,从中描述NuGet和SemVer的最佳实践 第3点指出我应该“在数字后缀中使用前导零来自动递增预释放”,但我正在努力解决如何将TeamCity中的build.counter参数归零,以便获得0025而不是25 有人有处理此问题的机制吗?您可以编写如下powershell脚本: function Update-BuildNumber([string]$buildNumber) { $VersionComponents = $buildNumber.Split(".")

我试图遵循一些指导,从中描述NuGet和SemVer的最佳实践

第3点指出我应该“在数字后缀中使用前导零来自动递增预释放”,但我正在努力解决如何将TeamCity中的
build.counter
参数归零,以便获得
0025
而不是
25


有人有处理此问题的机制吗?

您可以编写如下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%

如果我是你,我会利用你。它包括一个选项,用于使用生成的版本号的
LegacySemVerPadded
版本。还有各种其他的

这里有一个TeamCity Meta Runner

GitVersion根据存储库的当前状态为您计算新的语义版本号

如果做不到这一点,可以在PowerShell的其他地方进行工作,然后使用更改TeamCity中的版本号。您可以找到PowerShell模块


这就提供了一些帮助函数。

谢谢-我会看看GitVersion。@starskythehutch这是我们内部使用的,我将在这个项目中使用它,所以请随时提问:-)如果您的版本号是一个简单的计数器(1,2,3,4,…),您可以使用TeamCity中的PowerShell一行代码来完成此任务:
“##TeamCity[buildNumber'{0}]”-f([Int32]%build.number%)。ToString(“0000”)| Write Host
,在构建过程中,您会将这一行放在何处工作?六年后,我使用此答案来完成以下操作:D我现在已将正确答案更改为这一行。