如何在azure管道中参数化azure agent.name?

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

我正在尝试参数化azure管道中的agent.name。目的是让用户可以选择在所需的机器上部署代码。所以我创建了一个包含几台机器的池并参数化agent.name

代码

parameters
- name: machinename
  displayName: machinename
  type: string
  values:
  - 10.72.1.123
  - 10.72.1.124

pool:
  name: PoolA
  demands:
    - agent.name -equals ${{ parameters.machinename}}

错误: 当尝试运行上面的代码时,我收到以下错误。

A template expression is not allowed in this context

请帮忙解决这个问题。

azure-devops azure-pipelines azure-pipelines-yaml azure-yaml-pipelines
3个回答
2
投票

您可以尝试使用此解决方法:

trigger: none

pool:
  name: Default
  demands:
  - agent.name -equals $(machinename)

jobs:
- job:
  displayName: 'Job 1'
  steps:
  - task: Bash@3
    inputs:
      targetType: 'inline' 
      script: |
        echo "$(machinename)"

然后请定义管道变量(在编辑管道时):

使该变量可被覆盖:

然后运行管道:

您不会获得下拉列表,但这是解决此问题的唯一方法。


0
投票

下面的 yaml 有效。

variables:
  vmname: machinename
pool:
  name: poolname
  demands:
    - agent.name -equals $(vmname)

0
投票

我的解决方案有效:

trigger: none

parameters:
  - name: agentToRestart
    displayName: 'Name of the agent to be restarted'
    type: string
    default: ''

variables:
  agentToOperate: ${{ parameters.agentToRestart }}

pool:
  name: 'Suite Agents'
  demands:
  - Agent.Name -equals $(agentToOperate)
© www.soinside.com 2019 - 2024. All rights reserved.