我有一组自托管的虚拟机 (MyTestPool),其中一半用于安装和测试“ON”版本(开启了一些功能),另一半用于安装默认版本“OFF”。所有测试代理 VM 都具有“ALL”作为用户定义的能力。其中一半也被标记为“ON”,另一半为“OFF”。
现在我有两个阶段,称为 DEPLOYOFF 和 DEPLOYON,如果变量组变量“skipDeployOffStage”或“skipDeployOnStage”设置为true,则可以跳过这两个阶段。我想要做的是,如果只需要测试 ON/OFF,则使用“ALL”作为代理需求。如果需要同时测试 ON 和 OFF,相应的阶段将要求它们各自的“ON”或“OFF”虚拟机。
问题:${{ if }}不起作用。
trigger: none
pr: none
pool: 'MyBuildPool'
variables:
- group: TEST_IF_VARIABLE_GROUP
- name: subPool
value: 'ON'
- 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 variables.useAllPool }}:
subPool: 'ALL'
${{ if not(variables.useAllPool) }}:
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'
当其中一个标志为假时的输出:
2020-08-02T18:39:05.5849160Z Value of useAllPool is: True
2020-08-02T18:39:05.5854283Z Value of VG variable 'skipDeployOnStage' is true and 'skipDeployOffStage' is false
2020-08-02T18:39:05.5868711Z Subpool is ALL
当两者都为假时的输出:
2020-08-02T18:56:40.5371875Z Value of useAllPool is: False
2020-08-02T18:56:40.5383258Z Value of VG variable 'skipDeployOnStage' is false and 'skipDeployOffStage' is false
2020-08-02T18:56:40.5386626Z Subpool is ALL
我错过了什么?