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