我正在帮助他们的VSTS构建的朋友,我们正在使用两个构建标识符
这是特定于Xamarin.iOS构建的,我们使用新的VSTS构建任务来更新Info.Plist。我们需要使用$(Build.BuildId)作为版本代码,这只是一个递增的数字。然后我们想要使用$(Build.BuildNumber)作为实际版本名称。如果要将其格式化为构建字符串,它将如下所示:
$(Build.BuildNumber)
= 1.0.0 $(Build.BuildId)
= 148 问题是我们已经将应用程序提交到具有更大构建ID的应用程序商店,然后是我们当前构建的内容。我们不想运行构建X次以同步它,而是想手动更新BuildId,以便我们可以开始使用它来完成整个工作流程。
答案 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)
。
对于下一个版本。 $(Build.BuildNumber)
值为1149。
答案 1 :(得分:2)
我正在使用counter expression:
MyAppVersion $[counter('my-counter-prefix', 500)]
MyAppVersion为500、501、502 ...
- 此函数只能在定义变量的表达式中使用。不能将其用作步骤,工作或阶段的条件的一部分。
- 计算一个数字,该数字随着管道的每次运行而增加。
- 参数:2.
prefix
和seed
。- 前缀是一个字符串表达式。每个前缀的唯一值都会跟踪一个单独的计数器值
- 种子是计数器的起始值
您可以创建一个计数器,该计数器在每次执行管道时都会自动递增1。定义计数器时,需要提供
prefix
和seed
。
答案 2 :(得分:0)
这不可能更新Build.BuildId
,但是您可以使用记录命令来设置here,如图所示Build.BuildNumber
:
Write-Host "##vso[build.updatebuildnumber]my-new-build-number"