是否可以手动更新构建变量$(Build.BuildId)

时间:2017-12-19 20:29:53

标签: azure-devops

我正在帮助他们的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的应用程序商店,然后是我们当前构建的内容。我们不想运行构建X次以同步它,而是想手动更新BuildId,以便我们可以开始使用它来完成整个工作流程。

3 个答案:

答案 0 :(得分:3)

不,这是不可能的。

预定义变量Build.BuildId值对于在VSTS帐户中记录回显构建是唯一的。

即使您可以通过logging命令更改值,但它只能用于当前构建,当您在构建下一个队列时,构建ID将继续增加而不会产生任何影响。

例如,当前Build.BuildId为148,即使您在构建中使用值{100} Write-Host "##vso[task.setvariable variable=Build.BuildId]2148",但当另一个版本排队时,Build.BuildId将为149. / p>

使用用户定义的变量来改善Build.BuildId

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

例如,如果当前Build.BuildID为148,而您在应用商店中提交的构建ID为2148,那么您可以使用值为custom.BuildId的{​​{1}}。然后为您的应用使用变量($(Build.BuildID)+2000)$(custom.BuildId)

enter image description here

对于下一个版本。 $(Build.BuildNumber)值为1149。

答案 1 :(得分:2)

我正在使用counter expression

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

MyAppVersion为500、501、502 ...

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

您可以创建一个计数器,该计数器在每次执行管道时都会自动递增1。定义计数器时,需要提供prefixseed

答案 2 :(得分:0)

这不可能更新Build.BuildId,但是您可以使用记录命令来设置here,如图所示Build.BuildNumber

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