Two issues cause your code to run incorrectly:
1.The ${{if}}: The way you write ${{if}} is incorrect, and the correct script is:
${{ if eq(variables['useAllPool'], true)}}:
subPool: 'ALL'
${{ if ne(variables['useAllPool'], true)}}:
subPool: 'OFF'
2.The definition of variables.useAllPool: You use a runtime expression ($[ <expression> ]), so when the ${{if}} is running, the value of variables.useAllPool is '$[ or(eq( variables.skipDeployOnStage, true), eq( variables.skipDeployOffStage, true)) ]' instead of true or false.
To solve this issue, you need to use compile time expression ${{ <expression> }}.
However, when using the compile-time expression, it doesn't contain any variables from variable groups. So you need to move the variables skipDeployOnStage and skipDeployOffStage from variable group to YAML file.
Solution :
1. Delete the variables skipDeployOnStage and skipDeployOffStage from the variable group TEST_IF_VARIABLE_GROUP.
2. Modify the YAML file:
trigger: none
pr: none
pool: 'MyBuildPool'
variables:
- group: TEST_IF_VARIABLE_GROUP
- name: subPool
value: 'ON'
- name: skipDeployOnStage
value: true
- name: skipDeployOffStage
value: false
- name: useAllPool
value: ${{ or(eq( variables.skipDeployOnStage, true), eq( variables.skipDeployOffStage, true)) }}
stages:
- stage: DEPLOYOFF
condition: ne(variables['skipDeployOffStage'], 'true')
variables:
# The test stage's subpool
${{ if eq(variables['useAllPool'], true)}}:
subPool: 'ALL'
${{ if ne(variables['useAllPool'], true)}}:
subPool: 'OFF'
pool:
name: 'MyTestPool'
demands:
- ${{ variables.subPool }}
jobs:
- job:
steps:
- checkout: none
- pwsh: |
Write-Host ("Value of useAllPool is: {0}" -f '$(useAllPool)')
Write-Host ("Value of VG variable 'skipDeployOnStage' is {0} and 'skipDeployOffStage' is {1}" -f '$(skipDeployOnStage)', '$(skipDeployOffStage)')
Write-Host ("Subpool is {0}" -f '$(subPool)')
displayName: 'Determined SubPool'
Modify the value of skipDeployOnStage and skipDeployOffStage in the YAML file to test.