Variables Devops YAML-使用表达式设置构建名称

Variables Devops YAML-使用表达式设置构建名称,variables,yaml,expression,azure-pipelines,build-numbers,Variables,Yaml,Expression,Azure Pipelines,Build Numbers,在yaml构建中,是否可以使用表达式设置构建名称;如果我能将发布管道与实际的构建id相匹配,这将是有利的 例如: trigger: - master variables: major: 2 minor: 3 offset: 2000 bid: $[$build.BuildID -as [int] + $offset] name: "$(major).$(minor).$(bid)" 该示例不适用于语法错误 您可以检查MSDN文档,没有提

在yaml构建中,是否可以使用表达式设置构建名称;如果我能将发布管道与实际的构建id相匹配,这将是有利的

例如:

trigger:  
- master

variables:  
    major: 2  
    minor: 3  
    offset: 2000  
    bid: $[$build.BuildID -as [int] + $offset]

name: "$(major).$(minor).$(bid)"


该示例不适用于语法错误

您可以检查MSDN文档,没有提供像求和这样的数学运算

更好的解决办法是取消补偿:

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'
  major: 2  
  minor: 3  
  #offset: 2000  

name: $(major).$(minor).$(build.BuildID)

例如,这将返回名称为
2.3.101

该示例不适用于语法错误

您可以检查MSDN文档,没有提供像求和这样的数学运算

更好的解决办法是取消补偿:

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'
  major: 2  
  minor: 3  
  #offset: 2000  

name: $(major).$(minor).$(build.BuildID)
例如,这将返回名称为
2.3.101

您可以使用动态设置名称作为bash或PowerShell脚本的一部分

有关更多详细信息,请参见,但要点如下:

name:“在任务中在下面动态设置”
变量:
专业:2
小调:3
抵销:2000
步骤:
-任务:PowerShell@2
displayName:设置生成的名称(即build.BuildNumber)
投入:
targetType:“内联”
脚本:|
[int]$buildIdWithOffset=([int]$(Build.BuildId))+([int]$(offset))
[字符串]$buildName=“$(主要)。$(次要)。$buildIdWithOffset”
Write Host“将生成的名称设置为“$buildName”。”
写入主机“##vso[build.updatebuildnumber]$buildName”
您可以使用动态设置名称作为bash或PowerShell脚本的一部分

有关更多详细信息,请参见,但要点如下:

name:“在任务中在下面动态设置”
变量:
专业:2
小调:3
抵销:2000
步骤:
-任务:PowerShell@2
displayName:设置生成的名称(即build.BuildNumber)
投入:
targetType:“内联”
脚本:|
[int]$buildIdWithOffset=([int]$(Build.BuildId))+([int]$(offset))
[字符串]$buildName=“$(主要)。$(次要)。$buildIdWithOffset”
Write Host“将生成的名称设置为“$buildName”。”
写入主机“##vso[build.updatebuildnumber]$buildName”

还有另一种方法可以在不使用脚本的情况下设置内部版本号。这种方法的优点是,构建名称是从一开始就设置的,这与在构建过程中更改原始名称的脚本不同。序列号的生成更干净(请参阅$(Rev:r)部分,它只在管道的“name”属性中工作

必须使用“format”表达式而不是($Variable)语法,因为生成名称是在编译阶段创建的,此时$(Variable)语法还不起作用。否则,变量将不会计算,并将作为$(Variable)进入生成名称


关于表达式的更多信息:

还有另一种方法可以在不使用脚本的情况下设置生成编号。此方法的优点是,生成名称是从一开始就设置的,这与在生成过程中更改原始名称的脚本不同。而且序列号生成更简洁(请参阅$(Rev:r)仅在管道的“名称”属性中工作的项

必须使用“format”表达式而不是($Variable)语法,因为生成名称是在编译阶段创建的,此时$(Variable)语法还不起作用。否则,变量将不会计算,并将作为$(Variable)进入生成名称


关于表达式的更多信息:

不幸的是,我需要偏移量才能发布到Apple和Google商店。当您拥有不同的buildId和发布ID时,很难通过系统跟踪构建。您是否可以使用。是一个类似的线程,您可以在其中查看更多信息。否。我尝试了类似的策略但是更新自定义变量的任务发生在流程的后期(在步骤中而不是在声明中)命名构建。是的。构建名称总是在其任何任务开始运行之前生成。正如我提到的,这在当前似乎不可能。声明表达式或预任务都是理想的。不幸的是,我需要偏移量才能发布到Apple和Google商店。很难通过当您的buildId与发布ID不同时,您是否可以使用。是一个类似的线程,您可以在其中检查更多信息。否。我尝试了类似的策略,但更新自定义变量的任务发生在过程的后期(在步骤中而不是在声明中)命名生成。是的。生成名称总是在其任何任务开始运行之前生成。正如我所提到的,这在当前似乎不可能。声明表达式或预任务都是理想的。谢谢@moutofmadness,我很高兴它起作用。您介意将此标记为答案吗(或有人这样做了),但没有将其标记为答案。谢谢!谢谢@moutofmadness,我很高兴它起了作用。您介意将此标记为答案吗:)似乎您对它投了高票(或有人这样做了),但没有将其标记为答案。谢谢!