我正在尝试找出使用demands
的{{1}}的{{1}}模板中的pool
模板为yaml
指定Azure DevOps
的语法
所以我有一个像这样的模板:
parameters
并这样称呼它:
parameters:
pool: ''
demands: ''
jobs:
- job: 'Job1'
pool:
name: ${{parameters.pool}}
demands: ${{parameters.demands}}
我尝试了许多不同的组合,例如将- template: 'shared_pipeline.yml'
parameters:
pool: 'poolname'
demands: >-
FPGA -equals True
CI -equals True
与>-
交换
将|-
更改为
demands: ${{parameters.demands}}
由于满足多种需求的原始语法是:
demands: |
- ${{parameters.demands}}
但是一直以来,我要么得到一个错误,说语法是错误的:
demands: |
- FPGA -equals True
- CI -equals True
或:
job_templates/shared_pipeline.yml (Line: 10, Col: 14): Invalid demand 'FPGA -equals True CI -equals True'. The demand should be in the format '<NAME>' to test existence, and '<NAME> -equals <VALUE>' to test for a specific value. For example, 'VISUALSTUDIO' or 'agent.os -equals Windows_NT'
我已经三重检查了是否有 和具有这些功能的代理。
在我看来,参数没有得到扩展。正确,就像它们仍然是一行而不是一行一样。
我尝试查看Azure DevOps文档,但是没有这种用法的示例。我已经尝试使用Google搜索,但是找不到解决方法
答案 0 :(得分:1)
所以我实际上放弃了这一点,但是今天我遇到了if
的相同问题
有一个 解决方案。而不是像这样调用模板:
dependsOn
您这样称呼它:
- template: 'shared_pipeline.yml'
parameters:
pool: 'poolname'
demands: >-
FPGA -equals True
CI -equals True
Azure Pipelines文档中没有任何记录。
还应将模板更新为:
- template: 'shared_pipeline.yml'
parameters:
pool: 'poolname'
demands: ['FPGA -equals True', 'CI -equals True']
处理未将parameters:
pool: ''
demands: []
jobs:
- job: 'Job1'
pool:
name: ${{parameters.pool}}
demands: ${{parameters.demands}}
作为输入参数的情况。 demands
可以为空,但应为空数组而不是空字符串。 demands
答案 1 :(得分:0)
参数可以表示简单的单行字符串,我认为使它表示两行字符串不容易(或可能吗?)。
此外,很难证明您的参数可以扩展为正确的Yaml格式。如果您的第二个需求与第一个需求没有相同的缩进,则yaml管道将无法运行。相反,我建议像这样重新配置您的结构:
#shared_pipeline.yml
parameters:
pool: ''
demand1: ''
demand2: ''
jobs:
- job: 'Job1'
pool:
name: ${{parameters.pool}}
demands:
- ${{parameters.demand1}}
- ${{parameters.demand2}}
steps:
- script: echo Hello, world!
displayName: 'Test'
并且:
#azure-pipelines.yml
jobs:
- template: 'shared_pipeline.yml'
parameters:
pool: 'default'
demand1: 'FPGA -equals True'
demand2: 'CI -equals True'
如果您可以确认已设置功能,那么它将很好地满足您的大多数需求: