Azure devops Can';t使用动态创建的stage运行模板化yaml Azure Devops管道

Azure devops Can';t使用动态创建的stage运行模板化yaml Azure Devops管道,azure-devops,azure-pipelines-yaml,azure-devops-yaml,Azure Devops,Azure Pipelines Yaml,Azure Devops Yaml,我的问题 我尝试创建模板化yaml Azure Devops管道: parameters: - name: envs type: object default: - QUAL - PROD - PREPROD stages: - template: Orchestrator.yml parameters: name: envs type: object default: - QUAL - PROD

我的问题

我尝试创建模板化yaml Azure Devops管道:

parameters:
- name: envs
  type: object
  default:
    -  QUAL
    -  PROD
    -  PREPROD
    
stages:
- template: Orchestrator.yml
  parameters:
   name: envs
   type: object
   default:
      -  QUAL
      -  PROD
      -  PREPROD
这是我的模板:

parameters:
 envs: {}

stages:
- ${{ each env in parameters.envs }}:
  - stage: ${{ env }}
    jobs:
    - job: Deploy
      steps:
        - script: echo Deploy project
          displayName: 'Deploy'
    - job: Tests
      steps:
       - script: echo Unit tests
         displayName: Test 1
但我得到了这个错误信息:

加载YAML生成管道时出错。阵列 必须至少包含一个元素。参数名称:阶段

好的,我修改我的主脚本如下:

parameters:
- name: envs
  type: object
  default:
    -  QUAL
    -  PROD
    -  PREPROD
    
stages:
- stage: Build
  jobs:
  - job: Build
    steps:
       - script: echo Compilation completed...
         displayName: 'Compile'

- template: Orchestrator.yml
  parameters:
   name: envs
   type: object
   default:
      -  QUAL
      -  PROD
      -  PREPROD
这次管道运行,但只运行第一个作业。模板未加载

我需要什么

我能够让这个场景使用单个文件脚本,但我想让它使用模板脚本

是否支持此方案?我该怎么办


谢谢

我这里有一个样本作为参考:

  • 在模板YAML文件(这里我将其命名为
    template.YAML
    )中,如下所示编写
  • 参数:
    -姓名:envs
    类型:对象
    违约:
    -夸尔
    -刺激
    -预处理
    阶段:
    -${{parameters.envs}中的每个环境:
    -阶段:${{env}
    displayName:'Stage${{env}}'
    工作:
    -工作:工作1
    displayName:“作业1”
    步骤:
    -bash:echo“当前作业是${{env}中的job1”
    -工作:工作2
    displayName:“作业2”
    步骤:
    -bash:echo“当前作业是${{env}中的job2”
    
  • 在管道YAML(这里我把它命名为
    pipeline.YAML
    )中,这样写
  • 触发器:
    -主要
    延伸:
    模板:template.yaml
    
  • 结果
  • 如果您不想硬编码
    template.yaml
    中参数“
    envs
    ”的值,可以编写如下代码

  • template.yaml
    中这样写
  • 参数:
    -姓名:envs
    类型:对象
    默认值:[]
    阶段:
    -${{parameters.envs}中的每个环境:
    -阶段:${{env}
    displayName:'Stage${{env}}'
    工作:
    -工作:工作1
    displayName:“作业1”
    步骤:
    -bash:echo“当前作业是${{env}中的job1”
    -工作:工作2
    displayName:“作业2”
    步骤:
    -bash:echo“当前作业是${{env}中的job2”
    
  • pipeline.yaml
    中,这样写
  • 触发器:
    -主要
    阶段:
    -模板:template.yaml
    参数:
    环境:
    -夸尔
    -刺激
    -预处理
    
  • 结果。同上

  • 要查看更多详细信息,请参见“”。

    谢谢。您在哪里找到扩展的文档?我在文件中找到了样本,但没有任何解释。你可以在这里看到@FrédéricDeLèneMirouze: