Search code examples
azure-devopsyamlazure-pipelinesazure-pipelines-yaml

Can Conditional Variable Assignment be Done in Azure Pipelines?


Azure Pipelines has Expressions and Conditions, but I can find no way to assign one of two values to a variable, based on a condition.

Is there any way to accomplish what this pseudo-code would?

    ${{ if endsWith( variables['Build.SourceBranchName'], '/master' ) }}: 
      buildVersion: variables['mavenVersion']
    ${{ else }}: 
      buildVersion: variables['Build.SourceBranchName']

Solution

  • This should do the trick....

    BuildVersion is initialised as $(Build.SourceBranch) if it's the master branch you change that to the $(mavenVersion) else no change.

    variables:
      mavenVersion: '1.0'
      buildVersion: $(Build.SourceBranch)
    
    pool:
      vmImage: 'ubuntu-latest'
    
    steps:
    
    - script: echo '##vso[task.setvariable variable=buildVersion]$(mavenVersion)'
      displayName: "Set the buildVersion as mavenVersion if the Build.SourceBranch = 'refs/heads/master' "
      condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
    
    - script: echo $(buildVersion)
      displayName: 'Printing the variable'
    

    non-master branches prints 'refs/heads/branch_name' which is mavenVersion non-master branches prints 'refs/heads/branch_name' which is mavenVersion

    master branch prints 1.0 which is mavenVersion master branch prints 1.0 which is mavenVersion