Azure devops Azure Devops YAML管道-如何重复任务

Azure devops Azure Devops YAML管道-如何重复任务,azure-devops,azure-pipelines,azure-devops-yaml,Azure Devops,Azure Pipelines,Azure Devops Yaml,在我的YAML管道中,我有一个部署作业: - stage: deployment_to_development jobs: - deployment: deployment_to_development displayName: Deploy to Development environment: Development variables: - template: migrate-vars.yml strategy: runOnce:

在我的YAML管道中,我有一个部署作业:

- stage: deployment_to_development
  jobs:
  - deployment: deployment_to_development
    displayName: Deploy to Development
    environment: Development
    variables:
    - template: migrate-vars.yml
    strategy:
      runOnce:
        deploy:
          steps:
          - template: migrate-data.yml
部署模板是一个简单的DbUp任务:

steps:
  - task: UpdateDatabaseWithDbUp@2
    displayName: Migrate data
    inputs:
      ConnectionString: 'Data Source=$(DatabaseServer);Initial Catalog=$(DatabaseName);Integrated Security=SSPI'
      ScriptPath: '$(Pipeline.Workspace)\data-migrations'
      JournalSchemaName: dbo
      JournalTableName: _SchemaVersions
      LogScriptOutput: true
      IncludeSubfolders: true
      Order: FolderStructure
      TransactionStrategy: SingleTransaction
变量模板定义服务器和数据库名称:

variables:
   DatabaseServer: 'server'
   DatabaseName: 'dbName'
   Instances: '_1,_2'
对于单个数据库来说,这一切都很好。但是,我希望对Instances变量中定义的每个实例重复此任务,即对于名为dbName_1、dbName_2的数据库。这一看似简单的壮举被证明是困难的

我尝试将实例作为参数数组传递,并使用

parameters:
  param: []

steps:
  - ${{each p in parameters.param}}:
但是任务中没有计算“p”变量。
还有很多徒劳的尝试。我一定错过了一些很明显的东西。这是什么?

我无法测试
UpdateDatabaseWithDbUp@2
但我有一些东西可以解释你如何实现你的目标。首先定义
template.yaml

参数:
-名称:“实例”
类型:对象
默认值:{}
-名称:“服务器”
类型:字符串
默认值:“”
步骤:
-${{parameters.instances}中的每个实例:
-脚本:echo${{parameters.server}}:${{{instance}
然后在生成中重用此模板:

步骤:
-模板:template.yaml
参数:
实例:
-测试1
-测试2
服务器:someServer
结果如下:


谢谢你的回答,我在那里学到了一些关于参数结构的新知识。我可以复制您的响应,但似乎已经破坏了我的模板,现在在部署步骤中根本没有启动该模板。我会继续修修补补的。我现在已经修好了,非常感谢。我最初尝试使用问题中描述的参数数组,但没有成功。我将其更改为您详细介绍的格式,并将任务包装在“每个”块中,效果非常好。再次感谢。