我正在尝试根据分支名称变量的变量组中设置的值将代理池需求(开发或阶段)分配给作业。以下是 yaml 文件的摘录:
template.yml
parameters:
- name: branch
type: string
jobs:
- job:
pool:
${{ if eq(parameters.branch, 'development') }}:
demands: Agent.Name -equals "DEVAGENT"
${{ if eq(parameters.branch, 'master') }}:
demands: Agent.Name -equals "STGAGENT"
steps:
- script: |
echo Branch name from Variable Group.
echo branch_param = ${{ parameters.branch }}
displayName: 'Run test Pipeline'
main.yml
variables:
- group: BranchVariableGroup
stages:
- stage: Test
displayName: 'Test'
jobs:
- template: template.yml
parameters:
branch: $(branchName)
上述代码编译正确,但未评估池需求的模板文件条件,并且将 MS 托管的默认代理分配给该作业。我想了解如何根据参数中传递的值使用自托管代理“DEVAGENT”或“STGAGENT”?
参数在模板编译时评估。变量组在运行时解析。编译发生在运行时之前,因此在您尝试将其作为参数传递时变量值不存在。
为什么不直接使用内置变量
Build.SourceBranchName
?