gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 21:15:03 24 4
gpt4 key购买 nike

在我的 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:
- name: 'instances'
type: object
default: {}
- name: 'server'
type: string
default: ''

steps:
- ${{ each instance in parameters.instances }}:
- script: echo ${{ parameters.server }}:${{ instance }}
然后在您的构建中重用此模板:
steps:
- template: template.yaml
parameters:
instances:
- test1
- test2
server: someServer
结果如下:
Azure DevOps Logs

关于azure-devops - Azure Devops YAML 管道 - 如何重复任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61398206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com