How to use variables as conditionals in steps of Azure Pipelines?

Viewed 8217

Azure Pipelines defines variables and conditions for the use in different pipeline tasks, steps and soon. When defining the following YAML pipeline, the step ReleaseOnlyScript should only be executed when the combined condition evaluated by the variable isValidReleaseBuild is true. In the Azure Pipeline DevOps Site, a variable BuildTypeis defined and set to release.

variables:
  - name: isValidReleaseBuild
    value: $[and(eq(variables['BuildType'], 'release'), startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))]

steps:
  - script: |
      echo "BuildType: $(BuildType)"
      echo "SourceBranch: $(Build.SourceBranch)"
      echo "ReleaseBuild: $(isValidReleaseBuild)"
    displayName: 'Buildinfo'
  - ${{ if eq(variables['isValidReleaseBuild'], true) }}:
    - script: |
        echo "YEAH its a Release!"
      displayName: 'ReleaseOnlyScript'

When running the pipeline, only the script BuildInfo is executed with the following output.

BuildType: release
SourceBranch: refs/tags/v1.0.0
ReleaseBuild: True

Why is the ReleaseOnlyScript not executed?

Update: Thx to Alex AIT's answer, I modified the pipeline as follows and it works now as expected.

variables:
  - name: isValidReleaseBuild
    value: $[and(eq(variables['BuildType'], 'release'), startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))]

jobs:
  - job: check_cicd
    steps:
      - script: |
          echo "BuildType: $(BuildType)"
          echo "SourceBranch: $(Build.SourceBranch)"
          echo "ReleaseBuild: $(isValidReleaseBuild)"
          if [ "$(isValidReleaseBuild)" = "True" ]; then
            echo "##vso[task.setvariable variable=ValidBuild;isOutput=true]True"
          else
            echo "##vso[task.setvariable variable=ValidBuild;isOutput=true]False"
          fi
        name: buildinfo
  - job: release_cicd
    dependsOn: check_cicd
    condition: eq(dependencies.check_cicd.outputs['buildinfo.ValidBuild'], 'True')
    steps:
      - template: build-release.yml
1 Answers
Related