Azure DevOps Pipelines - 从模板设置池名称

Azure DevOps Pipelines - Setting pool name from the template

提问人:Zulander 提问时间:11/16/2023 最后编辑:Zulander 更新时间:11/20/2023 访问量:93

问:

我正在尝试弄清楚如何使用 ;将池名称设置为 : 不起作用;但是,当我去思考变量时,它工作正常;与类似,不确定这些阶段是否与手头的问题有关parameters.deploymentPoolname: ${{ parameters.deploymentPool }}

parameters:
  - name: deploymentPool
    type: string
    default: Pool A
    displayName: Select pool
    values:
    - Pool A

    variables: 
      AzureDevopsPool: ${{ parameters.deploymentPool }}
    
    stages:
      - stage: Stage 1
        jobs:
          - job: job 1
            pool: 
              name: '$(AzureDevopsPool)'
azure-devops azure-pipelines

评论

0赞 brett_0267 11/16/2023
尝试将其更改为名称:${{ variables。AzureDevopsPool }}?如果要访问变量中的值
0赞 Zulander 11/16/2023
它不起作用;就像变量是空的,得到池 xxxx 中没有代理当前能够处理此请求;我真的不确定为什么使用“$(AzureDevopsPool)”有效。它应该与 ${{ 变量相同。AzureDevopsPool }} 或 ${{ parameters.deploymentPool }};也许这是一个范围问题
0赞 brett_0267 11/16/2023
尝试 Just pool: ${{ 变量。AzureDevopsPool }},而不指定名称。在此处查找指定没有需求的池:learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/...。它可能只是对此大惊小怪
0赞 Zulander 11/16/2023
也试过了......没有运气;

答:

1赞 Kevin Lu-MSFT 11/16/2023 #1

检查您共享的 YAML 示例,它似乎存在一些字符缩进问题。

测试使用 ${{ parameters.deploymentPool }} 在作业级别设置池名称,它可以按预期工作。

请参阅示例:

parameters:
  - name: deploymentPool
    type: string
    default: Pool A
    displayName: Select pool
    values:
    - Pool A
    - default
    
stages:
- stage: Stage1
  jobs:
  - job: job1
    pool: 
     name: ${{ parameters.deploymentPool }}
    steps:
      - script: echo "test"

结果:

enter image description here

enter image description here

池 xxxx 中当前没有代理能够处理此请求

对于此问题,应将变量的值成功传递到池名称字段。

它在指定的池中运行时遇到问题。它应该与 YAML 代码本身无关。

该问题可能与自承载代理本身有关。

您可以考虑将自承载代理升级到较新版本,并检查它是否可以工作。

有关详细信息,可以参考此票证:Azure DevOps代理未选取基于 yml 的作业

1赞 wenbo 11/20/2023 #2

我已经测试了您的情况,并提供了几种引用参数变量的方法。我只测试了一个池名称作为示例。

parameters:
- name: deploymentPool
  type: string
  displayName: Select pool
  values:
  - 'Azure Pipelines'
  default: 'Azure Pipelines'

variables: 
  AzureDevopsPool: ${{ parameters.deploymentPool }}
  testPool: Azure Pipelines

stages:
- stage: stage1
  jobs:
  - job: job1
    pool: 
      name: ${{ variables.AzureDevopsPool }}
    steps:
    - script: | 
        echo 'test in job1 in stage1'

- stage: stage2
  jobs:
  - job: job2
    pool: 
      name: $(testPool)
    steps:
    - script: | 
        echo 'test in job2 in stage2'

- stage: stage3
  jobs:
  - job: job3
    pool: 
      name: $(AzureDevopsPool)
    steps:
    - script: | 
        echo 'test in job3 in stage3'

- stage: stage4
  jobs:
  - job: job4
    pool: 
      name: ${{ parameters.deploymentPool }}
    steps:
    - script: | 
        echo 'test in job4 in stage4'

enter image description here

笔记:

  1. 参数可以添加到管道中的任何位置。
  2. 在编写 yaml 时,应清理运行时和编译时,以避免混淆