Azure 管道使用表达式而不是值

Azure pipeline uses expression and not value

我使用以下 azure 管道(为测试而简化):

parameters:
  - name: BUILD_QUALITY
    displayName: What is the build quality?
    type: string
    default: "alpha"
    values:
      - alpha
      - beta
      - preview
      - release

trigger: none

variables:
  solution: "**/*.sln"
  buildPlatform: 'Any CPU'
  buildConfiguration: "Release"
  patch: $[counter(variables['CustomVersion'], 1)]
  versionNumber: $(Year:yyyy).$(Month).$(DayOfMonth)
  ${{ if eq( parameters['BUILD_QUALITY'], 'release') }}:
    VERSION_NUMBER: ${{ variables.versionNumber }}.$(patch)
  ${{ else }}:
    VERSION_NUMBER: ${{ variables.versionNumber }}.$(patch)-${{parameters['BUILD_QUALITY']}}

name: Test_${{ variables.versionNumber }}.$(patch)

pool:
  vmImage: "windows-latest"

stages:
  - stage: buildCliTool

    jobs:
      - job: cliTool
        steps:
          - script: echo "versionNumber is ${{ variables.versionNumber }}"
          - script: echo "Build name is $(Build.BuildNumber)"

          
  - stage: buildNuget

    jobs:
      - job: nuget
        steps:
          - script: echo "versionNumber is $(versionNumber)"
          - script: echo "versionNumber is $(VERSION_NUMBER)"
  

脚本步骤用于检查变量值是否正确。 但是,他们只为表达式 - script: echo "Build name is $(Build.BuildNumber)"

打印正确的值

在所有其他情况下,输出不是值,而是表达式本身。

我想在我的阶段使用 versionNumber,但现在它没有适当的价值。 请有人建议,我应该如何使用该变量来获取值,而不是表达式主体?

问题在于您在此变量中使用的标记:

versionNumber: $(Year:yyyy).$(Month).$(DayOfMonth)

那些 yearmonthdayofmonth 标记 – 你不能在普通变量,仅当 defining a build number:

You can use these tokens only to define a run number; they don't work anywhere else in your pipeline.