【问题标题】:How to zero pad the build counter in TeamCity如何在 TeamCity 中对构建计数器进行零填充
【发布时间】:2014-09-18 12:41:58
【问题描述】:

我正在尝试遵循 this article 的一些指导,该指导描述了 NuGet 和 SemVer 最佳实践。

第 3 点指出我应该“在数字后缀中使用前导零来自动递增预发布”,但我正在努力研究如何在 TeamCity 中对 build.counter 参数进行零填充,以便我得到 0025 25.

有没有人有办法处理这个问题?

【问题讨论】:

    标签: teamcity teamcity-8.0


    【解决方案1】:

    你可以写一个类似的 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%
    

    【讨论】:

    • 如果您的内部版本号是一个简单的计数器(1、2、3、4,...),您可以使用 TeamCity 中的 PowerShell one liner 完成此操作:"##teamcity[buildNumber '{0}']" -f ([Int32]%build.number%).ToString("0000") | Write-Host
    • 你会在构建过程中将这一行放在哪里工作?
    • 六年后,我用这个答案来做到这一点:D 我现在已经把正确答案改成了这个。
    【解决方案2】:

    如果我是你,我会使用GitVersion。它包括使用生成的版本号的LegacySemVerPadded 版本的选项。还有其他各种alternatives of the generated version number

    有一个 TeamCity Meta Runner 供它使用 here

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

    如果不这样做,是的,在 PowerShell 中的其他地方执行工作,然后使用 TeamCity Service Messages 更改 TeamCity 中的内部版本号。你可以找到一个 PowerShell 模块here

    这提供了一些帮助函数来做这件事。

    【讨论】:

    • 谢谢 - 我会看看 GitVersion。
    • @starskythehutch 这是我们内部使用的,也是我将在这个项目中使用的,github.com/chocolatey/ChocolateyGUI,所以请随时提出任何问题 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 2023-04-09
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    相关资源
    最近更新 更多