提问人:Zulander 提问时间:11/16/2023 最后编辑:Zulander 更新时间:11/20/2023 访问量:93
Azure DevOps Pipelines - 从模板设置池名称
Azure DevOps Pipelines - Setting pool name from the template
问:
我正在尝试弄清楚如何使用 ;将池名称设置为 : 不起作用;但是,当我去思考变量时,它工作正常;与此类似,不确定这些阶段是否与手头的问题有关parameters.deploymentPool
name: ${{ 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)'
答:
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"
结果:
池 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'
笔记:
- 参数可以添加到管道中的任何位置。
- 在编写 yaml 时,应清理运行时和编译时,以避免混淆
评论