【问题标题】:TFS 2017 Build NumberingTFS 2017 内部版本编号
【发布时间】:2018-05-04 11:33:52
【问题描述】:

我们已从 TFS 2013 升级到 TFS 2017,我们在 2013 年尝试实现的一项功能是拥有自定义内部版本号的能力。在之前的方法中,我们有一个名为 BuildVersion.XML 的文件,它在第一个构建步骤中将读取主要、次要和修订版,并在修订版上使用该构建号 + 1 命名构建。然后它将更改然后结帐并更新修订号并签入新版本。我知道人们有一些更新 AssemblyInfo 的步骤。问题是并非我们所有的代码都是 .net 应用程序。我们现在还有 SSIS 包、Cordova iOS/android 应用程序、角度站点、带有 node.js 的 aws Lambda 函数,它们没有 AssemblyInfo 的概念。有没有简单的方法来实现这个?

【问题讨论】:

    标签: tfs


    【解决方案1】:

    您可以在 TFS 2017 的 Team Build 中执行完全相同的操作。

    您可以通过调用从任何任务更新内部版本号:

    Write-Verbose -Verbose "##vso[build.updatebuildnumber]1.2.3.4"
    

    添加一个 PowerShell 任务并添加一个内联脚本以从您的文件中读取并使用上述内容更新内部版本号。

    然后,您可以拥有使用内部版本号的附加脚本,以任何您需要的方式对应用程序进行版本控制。

    您可以在此处查看日志记录命令的完整列表 https://github.com/Microsoft/vso-agent-tasks/blob/master/docs/authoring/commands.md

    【讨论】:

    • ok 所以写这个命令会更新构建的版本号吗? '''Write-Verbose -Verbose "##vso[build.updatebuildnumber]1.2.3.4"。但我想增加数量并签出文件,更新值并再次签入
    • @greektreat 您可以在 PowerShell 脚本中执行所有这些步骤,然后在同一脚本中调用 build.updatebuildnumber。
    【解决方案2】:

    您可以使用我的VSTS TFVC tasks 与源代码管理进行交互,但我不推荐这样做。我为我的客户构建了这些任务,他们正在做你正在做的事情。

    与其依赖源代码控制中的文件,不如将 BuildNumber 从构建定义传递到构建,这是一个更好的解决方案,您的第一步是使用正确的版本号更新磁盘上的文件,然后运行你的构建。

    如果您在构建过程中操作文件并将其签入,则当您扩展到多个构建代理时,您会面临编号不一致的风险,很难与并行构建和构建变量多路复用结合使用,而且众所周知,很难做到Gated Checkins 和 Shelveset 构建。此外,它限制了您将来迁移到 Git 的选择。

    【讨论】:

    • 我们将无法传递内部版本号。我们有许多开发人员(50 多名)在许多系统上工作,我们需要它完全自动化。我有另一个想法是可以自动更新我的构建变量吗?我创建了一个变量 Build.minor = 1,当我构建成功后将其更新为 2 以进行下一个构建?
    • 开发人员的数量并没有真正的影响...而且系统的数量也不是...您可以使用rest api查询之前的构建号并使用powershell玩它.然后使用 mrhinsh 提供的魔术字符串写出新数字。您仍然会遇到并行构建、门控构建、搁置构建等问题。
    猜你喜欢
    • 2010-12-04
    • 2016-03-25
    • 1970-01-01
    • 2012-06-08
    • 2017-02-15
    • 2011-09-20
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多