使用变量组的池的 ADO 模板表达式条件

问题描述 投票:0回答:1

我正在尝试根据分支名称变量的变量组中设置的值将代理池需求(开发或阶段)分配给作业。以下是 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”?

azure-devops azure-pipelines
1个回答
0
投票

参数在模板编译时评估。变量组在运行时解析。编译发生在运行时之前,因此在您尝试将其作为参数传递时变量值不存在。

为什么不直接使用内置变量

Build.SourceBranchName

© www.soinside.com 2019 - 2024. All rights reserved.