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