Azure devops 是否可以手动更新生成变量$(build.BuildId)
我正在帮助一位朋友进行VST构建,我们正在使用这两种构建标识符Azure devops 是否可以手动更新生成变量$(build.BuildId),azure-devops,Azure Devops,我正在帮助一位朋友进行VST构建,我们正在使用这两种构建标识符 $(Build.BuildId) $(Build.BuildNumber) 这是特定于Xamarin.iOS构建的,在该构建中,我们使用新的VSTS构建任务来更新Info.Plist。我们需要对版本代码使用$(Build.BuildId),它只是一个递增的数字。然后我们想使用$(Build.BuildNumber)作为实际的版本名。如果要将其格式化为生成字符串,则如下所示: $(Build.BuildNumber)=1.0.0
- $(Build.BuildId)
- $(Build.BuildNumber)
=1.0.0$(Build.BuildNumber)
=148$(Build.BuildId)
- 结果=1.0.0(148)
Build.BuildId
的值对于在VSTS帐户中记录回显生成是唯一的
即使您可以通过logging命令更改该值,但它仅适用于当前生成,当您对下一个生成进行排队时,生成ID将继续增加,而不会产生任何影响
例如,当前的Build.BuildId
是148,即使您在一个构建中通过Write Host“##vso[task.setvariable=Build.BuildId]2148”
将值设置为100,但当另一个构建排队时,Build.BuildId
将是149
解决方法是使用用户定义的变量,而不是Build.BuildId
:
添加用户定义的变量,如custom.BuildId
,并使用($(Build.BuildId)+GapNumber)
设置值
例如,如果当前的Build.BuildID
是148,而您在app store中提交的Build ID是2148,那么您可以使用自定义.BuildID
的值($(Build.BuildID)+2000)
。然后为您的应用程序使用变量$(custom.BuildId)
和$(Build.BuildNumber)
用于下一次构建。custom.BuildId
值将为1149。我使用的是:
MyAppVersion$[counter('my-counter-prefix',500)]
MyAppVersion是500501502
- 此函数只能在定义变量的表达式中使用。它不能用作步骤、作业或阶段条件的一部分
- 计算随管道每次运行而递增的数字
- 参数:2<代码>前缀和
种子
- 前缀是一个字符串表达式。针对前缀的每个唯一值跟踪计数器的单独值
- 种子是计数器的起始值
前缀
和种子
这无法更新
Build.BuildId
,但您可以使用日志命令设置Build.BuildNumber
:
写入主机“##vso[build.updatebuildnumber]我的新版本号”
目前这是一个很好的解决方法。我和微软的Chris Patterson谈过,他说2018年初会有一个新功能,它支持以种子数递增,类似于BuildID的工作方式。是否有任何更新?2018年初已经过去@AndrewoEfling据我所知,唯一的其他方法是使用@Felix提供的下面答案中的构建计数器。我相信这只在构建yaml中可用,而不是经典编辑器(对此不是100%确定)