'Azure pipeline uses expression and not value

I use the following azure pipeline (it is simplified for testing):

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 steps are used to check, whether variables values are correct. But, they print correct value just for expression - script: echo "Build name is $(Build.BuildNumber)"

enter image description here

In all other cases, output is not value, but expression itself.

enter image description here

I'd like to use versionNumber in my stages, but now it does not have proper value. Could someone suggest please, how should I use that variable to obtain value, and not expression body?



Solution 1:[1]

The problem is with the tokens you're using in this variable:

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

Those year, month and dayofmonth tokens – you can't use them in normal variables, only when defining a build number:

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

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Vince Bowdren