【问题标题】:How to parameterize azure agent.name in azure pipeline?如何在 azure 管道中参数化 azure agent.name?
【发布时间】:2021-11-13 13:04:56
【问题描述】:

我正在尝试在 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

请帮助解决这个问题。

【问题讨论】:

  • 这里的池应该定义用于部署/编译你的包/代码的机器,而不是你想部署的机器。 Yoy可能会尝试实现这一点,但最初的目的不同。而不是在任何地方都可以使用模板表达式,因为它必须在编译时而不是在运行时知道。

标签: azure-devops azure-pipelines azure-pipelines-yaml azure-yaml-pipelines


【解决方案1】:

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

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)"

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

使这个变量可以被覆盖:

然后运行 ​​n 个管道:

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

【讨论】:

    【解决方案2】:

    以下 yaml 有效。

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

    【讨论】:

      猜你喜欢
      • 2020-10-05
      • 2020-10-30
      • 2022-08-02
      • 1970-01-01
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多