为什么这些Azure DevOps预定义变量在管道构建中不起作用?

时间:2019-02-21 05:36:12

标签: azure-devops

鉴于以下yml代码段,此脚本中使用的Azure DevOps管道predefined variables不会被“挑选”。

pool:
  vmImage: 'Ubuntu 16.04'

variables:
  buildConfiguration: 'Release'

trigger:
  branches:
    include:
    - master
  paths:
    include:
  <snipped>
pr:
  autoCancel: false
  paths:
    include:
  <snipped>

steps:
# Remove this task once .NET Core 2.2 is added to hosted agent.
- task: DotNetCoreInstaller@0
  inputs:
    packageType: 'sdk'
    version: '2.2.100'

- script: dotnet build --configuration $(buildConfiguration) -p:Version=$(Year:yyyy).$(Month).$(DayOfMonth).$(Rev:r)
  displayName: 'dotnet build'
  workingDirectory: 'src/<snipped>'

注意我如何尝试设置dotnet build的version属性:

dotnet build --configuration $(buildConfiguration) -p:Version=$(Year:yyyy).$(Month).$(DayOfMonth).$(Rev:r)

但是!当我手动定义构建名称..然后引用该变量..时,它起作用了!

name: $(Year:yyyy).$(Month).$(DayOfMonth).$(Rev:r)

  <snipped>

- script: dotnet build --configuration $(buildConfiguration) -p:Version=$(Build.BuildNumber)
  displayName: 'dotnet build'
  workingDirectory: 'src/<snipped>'

这是Azure DevOps的错误吗?

1 个答案:

答案 0 :(得分:4)

变量$(Year:yyyy) $(Month) $(DayOfMonth) $(Rev:r)不是常规预定义构建变量的一部分,如您所见,它们不存在于列表{ {3}}。

您只能以内部版本号格式(YAML中的name)使用这些变量

因此,您就可以在其中使用它们,并且在构建过程中使用变量Build.BuildNumber来获取值。