Azure Pipelines 中的此上下文中不允许映射值
Mapping values are not allowed in this context in Azure Pipelines
我有一个 Azure DevOps YAML 管道,它有多个部署阶段,我想模板化阶段并使用 for-each 模板循环添加这些阶段,这就是我目前所拥有的
parameters:
- name: Deployments
type: object
default:
Deployment:
name: DeployDev
displayName: ...
dependsOn: ...
environment: ...
...
stages:
- stage: SomeOtherStage
...
- ${{ each deployment in parameters.Deployments }}
- template: ./path/to/template/file.yml
parameters:
name: ${{ deployment.name }}
displayName: ...
...
在我的舞台模板中
parameters:
- name: name
type: string
- name: displayName
...
stages:
- stage: ${{ parameters.name }}
displayName: ${{ parameters.displayName }}
...
我的问题是,当我将其放入 Azure DevOps 并验证管道时,我收到验证错误 /azure-pipelines-cd.yml: (Line: 36, Col: 15, Idx: 685) - (Line: 36, Col: 15, Idx: 685): Mapping values are not allowed in this context.
。
我在其他地方看到过这样的例子,但不明白为什么我会收到这个错误,有没有其他人这样做并让它工作
舞台不支持“each”功能。要使用 Stage 模板,您可以参考以下示例。在此示例中,一个阶段针对两种不同的测试制度重复两次。阶段本身只指定一次。:
# File: stages/test.yml
parameters:
name: ''
testFile: ''
stages:
- stage: Test_${{ parameters.name }}
jobs:
- job: ${{ parameters.name }}_Windows
pool:
vmImage: vs2017-win2016
steps:
- script: npm install
- script: npm test -- --file=${{ parameters.testFile }}
- job: ${{ parameters.name }}_Mac
pool:
vmImage: macos-10.14
steps:
- script: npm install
- script: npm test -- --file=${{ parameters.testFile }}
# File: azure-pipelines.yml
stages:
- template: stages/test.yml # Template reference
parameters:
name: Mini
testFile: tests/miniSuite.js
- template: stages/test.yml # Template reference
parameters:
name: Full
testFile: tests/fullSuite.js
我有一个 Azure DevOps YAML 管道,它有多个部署阶段,我想模板化阶段并使用 for-each 模板循环添加这些阶段,这就是我目前所拥有的
parameters:
- name: Deployments
type: object
default:
Deployment:
name: DeployDev
displayName: ...
dependsOn: ...
environment: ...
...
stages:
- stage: SomeOtherStage
...
- ${{ each deployment in parameters.Deployments }}
- template: ./path/to/template/file.yml
parameters:
name: ${{ deployment.name }}
displayName: ...
...
在我的舞台模板中
parameters:
- name: name
type: string
- name: displayName
...
stages:
- stage: ${{ parameters.name }}
displayName: ${{ parameters.displayName }}
...
我的问题是,当我将其放入 Azure DevOps 并验证管道时,我收到验证错误 /azure-pipelines-cd.yml: (Line: 36, Col: 15, Idx: 685) - (Line: 36, Col: 15, Idx: 685): Mapping values are not allowed in this context.
。
我在其他地方看到过这样的例子,但不明白为什么我会收到这个错误,有没有其他人这样做并让它工作
舞台不支持“each”功能。要使用 Stage 模板,您可以参考以下示例。在此示例中,一个阶段针对两种不同的测试制度重复两次。阶段本身只指定一次。:
# File: stages/test.yml
parameters:
name: ''
testFile: ''
stages:
- stage: Test_${{ parameters.name }}
jobs:
- job: ${{ parameters.name }}_Windows
pool:
vmImage: vs2017-win2016
steps:
- script: npm install
- script: npm test -- --file=${{ parameters.testFile }}
- job: ${{ parameters.name }}_Mac
pool:
vmImage: macos-10.14
steps:
- script: npm install
- script: npm test -- --file=${{ parameters.testFile }}
# File: azure-pipelines.yml
stages:
- template: stages/test.yml # Template reference
parameters:
name: Mini
testFile: tests/miniSuite.js
- template: stages/test.yml # Template reference
parameters:
name: Full
testFile: tests/fullSuite.js