【问题标题】:Is it possible to manually update the build variable $(Build.BuildId)是否可以手动更新构建变量 $(Build.BuildId)
【发布时间】:2017-12-19 20:29:52
【问题描述】:

我正在帮助一位朋友进行 VSTS 构建,我们正在使用这两个构建标识符

  • $(Build.BuildId)
  • $(Build.BuildNumber)

这特定于 Xamarin.iOS 构建,我们在其中使用新的 VSTS 构建任务来更新 Info.Plist。我们需要使用 $(Build.BuildId) 作为版本代码,它只是一个递增的数字。然后我们想使用 $(Build.BuildNumber) 作为实际的版本名称。如果要将其格式化为构建字符串,它将如下所示:

  • $(Build.BuildNumber) = 1.0.0
  • $(Build.BuildId) = 148
  • 结果 = 1.0.0 (148)

问题是我们已经将我们的应用程序提交到应用商店,其构建 ID 比我们当前构建的 ID 更大。我们不想运行构建 X 次来同步它,而是希望手动更新 BuildId,以便我们可以开始将其用于我们的完整工作流程。

【问题讨论】:

    标签: azure-devops


    【解决方案1】:

    不,这是不可能的。

    预定义变量Build.BuildId的值是唯一的,用于记录VSTS帐户中的echo build。

    即使你可以通过 logging 命令更改值,但它只能对当前构建有效,当你排队下一个构建时,构建 ID 将继续增加而没有任何影响。

    比如当前的Build.BuildId是148,即使你在一次构建中使用Write-Host "##vso[task.setvariable variable=Build.BuildId]2148"的值为100,但是当另一个构建排队时,Build.BuildId将是149。

    解决方法是使用用户定义的变量而不是Build.BuildId

    添加一个用户定义的变量,例如custom.BuildId,并使用($(Build.BuildID)+GapNumber)设置值。

    比如当前Build.BuildID是148,而你在应用商店提交的build ID是2148,那么你可以使用custom.BuildId的值($(Build.BuildID)+2000)。然后为您的应用使用变量$(custom.BuildId)$(Build.BuildNumber)

    为下一次构建。 custom.BuildId 的值为 1149。

    【讨论】:

    • 目前这是一个很好的解决方法。我正在与微软的 Chris Patterson 交谈,他说 2018 年初将推出一项新功能,支持使用类似于 BuildID 工作方式的种子编号递增
    • 这方面有什么更新吗? 2018年初已经过去了。 @AndrewHoefling
    • 据我所知,唯一的其他方法是在@Felix 提供的以下答案中使用构建计数器。我相信这仅在构建 yaml 中可用,而不是经典编辑器(不是 100% 确定)
    【解决方案2】:

    我正在使用counter expression

    MyAppVersion $[counter('my-counter-prefix', 500)]

    MyAppVersion 为 500、501、502...

    • 此函数只能在定义变量的表达式中使用。它不能用作步骤、作业或阶段条件的一部分。
    • 计算一个随着管道的每次运行而递增的数字。
    • 参数:2.prefixseed
    • 前缀是一个字符串表达式。为前缀的每个唯一值跟踪一个单独的计数器值
    • 种子是计数器的起始值

    您可以创建一个计数器,在每次执行管道时自动加一。当你定义一个计数器时,你提供了一个prefix 和一个seed

    【讨论】:

      【解决方案3】:

      这无法更新Build.BuildId,但您可以使用日志记录命令设置Build.BuildNumber,如here 所示:

      Write-Host "##vso[build.updatebuildnumber]my-new-build-number"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-04
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        • 2015-12-20
        • 1970-01-01
        • 2012-03-09
        • 1970-01-01
        相关资源
        最近更新 更多