天蓝色管道 yml 中的嵌套循环

时间:2021-07-30 17:39:41

标签: azure azure-devops azure-pipelines nested-loops azure-pipelines-yaml

我有两个参数列表,我想在 azure 管道 yml 上的 sql 任务和 webapp 部署任务中传递这些参数值。

parameters:
- name: db
  type: object
  default: [db1, db2, db3.......]

- name: apps
  type: object
  default: [app1, app2, app3......]

steps:
- ${{ each dblist in parameters.db && each applist in parameters.apps}}:
  - task: SqlAzureDacpacDeployment@1
    displayName: 'Azure SQL SqlTask ${{ db }}'
    inputs:
      azureSubscription: '$(Parameters.connectedServiceName)'
      ServerName: xxxx.xxxx.windows.net
      DatabaseName: ${{ dblist  }}
      SqlUsername: xxxxx
      SqlPassword: xxxxx
      deployType: SqlTask
      SqlFile: 'Table.sql'

  - task: AzureWebApp@1
    displayName: 'Azure Web App Deploy ${{ applist }}'
    continueOnError: true
    inputs:
      azureSubscription: '$(Parameters.connectedServiceName)'
      appType: webApp
      ResourceGroupName: $(group)
      appName: ${{ applist }}
      package: '$(build.artifactstagingdirectory)/**/*.zip'

当我运行这个管道时,我遇到了错误,我想运行的顺序可能不正确。

How can i run tasks like this loop: 
db1
app1
db2
app2
db3
app3...... and so on

如何解决问题?

1 个答案:

答案 0 :(得分:1)

因此,如果我理解,您希望按顺序部署一个 app + db 数组。 数组只是对象,所以你应该能够做这样的事情

parameters:
- name: configurations
  type: object
  default:
  - app: app1
    db: db1
  - app: app2
    db: db2

steps:
- ${{ each configuration in parameters.configurations }}:
  - pwsh: Write-Host Hello ${{ configuration.db }}
    displayName: Deploy database

  - pwsh: Write-Host Hello ${{ configuration.app }}
    displayName: Deploy webapp