首页 > 解决方案 > 基于 Yaml 的管道 - 在运行时从下拉菜单中设置池名称

问题描述

我有这个 yaml,如何将池设置为下拉列表中选择的值?显然我现在所拥有的不起作用。它抱怨在这种情况下不允许使用模板表达式。

parameters:
- name: InstallNodeJS
  displayName: 'Install Node.js'
  type: boolean
  default: false

- name: AgentPoolSelector
  displayName: Select Agent Pool
  type: string
  default: Default
  values:
   - Default
   - Cloud
   - Dev Machines

variables:
  custom.branch: 'my-branch'
  
pool:
  name: $ {{ parameters.AgentPoolSelector }}

steps:
  - ${{ if eq(parameters.InstallNodeJS, true) }}:
     - template: templates/nodejs-install.yml

标签: azure-devopsyamlazure-yaml-pipelines

解决方案


根据我的测试,要根据运行时参数设置池名称,我们应该将池插入到一个作业/阶段级别。您可以尝试这种格式来解决问题:

parameters:
- name: InstallNodeJS
  displayName: 'Install Node.js'
  type: boolean
  default: false

- name: AgentPoolSelector
  displayName: Select Agent Pool
  type: string
  default: Default
  values:
   - Default
   - Cloud
   - Dev Machines

variables:
  custom.branch: 'my-branch'
  
jobs:
- job:
  displayName: FirstJob
  pool: 
    name: ${{ parameters.AgentPoolSelector }}
  steps:
    - ${{ if eq(parameters.InstallNodeJS, true) }}:
      - template: templates/nodejs-install.yml

推荐阅读