azure - 在 Azure Pipeline 任务中循环多个参数

标签 azure azure-devops azure-devops-pipelines

我正在尝试创建 Azure Pipeline。但我在其中循环 Azure 任务时遇到问题。我在下面通过一个简化的例子解释了我面临的问题。

我希望通过这个管道创建多个Azure Web应用程序。每个 Web 应用程序都有一个使用 --startup-file 传递给它的命令,并且该命令包含一个参数。要创建的应用程序数量以及要传递给每个应用程序的参数在触发管道时作为运行时参数提供
例如。 如果 NUMBER=3 且 ARGUMENTS=24,56,123
那么每个 Azure Web 应用程序 --name--startup-file 应如下所示

--name myapp-1 --startup-file 'java -jar my.jar --arg 24   
--name myapp-2 --startup-file 'java -jar my.jar --arg 56   
--name myapp-3 --startup-file 'java -jar my.jar --arg 123   

管道提示用户输入要创建的 Web 应用程序的数量以及要传递给它们的逗号分隔的参数字符串。 main.yaml 中定义的 Azure 管道步骤将这两个参数传递给模板 (createapps.yaml)。然后,必须根据此模板创建定义数量的应用程序。

main.yaml如下

parameters:
- name: NUMBER
  type: number
- name: ARGUMENTS
  type: string

steps:
- template: createapps.yaml
  parameters:
    NUMBER: ${{ parameters.NUMBER }}
    ARGUMENTS: ${{ parameters.ARGUMENTS }}

createapps.yaml如下

parameters:
- name: NUMBER
  type: number
- name: ARGUMENTS
  type: string

steps:
- task: AzureCLI@2
  displayName: Create Apps
    az webapp create \
      --name myapp-<Number> \
      --plan myplan \
      --resource-group myrg \
      --deployment-container-image-name myimage:latest \
      --startup-file 'java -jar my.jar --arg <Argument>'

如何在 createapps.yaml 中循环任务,并通过迭代 NUMBERARGUMENTS< 在 Azure CLI 命令中分配 /

最佳答案

用“,”将ARGUMENTS分割成一个数组并使用for循环。像这样的事情:

- task: AzureCLI@2
  displayName: Create Apps
  inputs:
    azureSubscription: $(azureServiceConnection)
    scriptType: bash
    scriptLocation: inlineScript
    inlineScript: |
      arr=(${ARGUMENTS//,/ })
      for ((i=1; i<=${{ parameters.NUMBER }}; i++ ))
      do
        az webapp create \
          --name "myapp-$i" \
          --plan myplan \
          --resource-group myrg \
          --deployment-container-image-name myimage:latest \
          --startup-file "java -jar my.jar --arg ${arr[i-1]}"
      done

关于azure - 在 Azure Pipeline 任务中循环多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63412011/

相关文章:

Azure DevOps API OAuth 授权获得 "Object Moved"响应

azure-devops - 如何在 Azure DevOps 中复制文件?

azure - 如何修复 Azure DevOps 发布管道中的错误 "Error Code: ERROR_DESTINATION_INVALID"

docker - Azure Devops Pipeline - 在构建上下文中找不到文件

azure - 从二头肌循环中调用的模块获取输出

由于缺少根证书,Azure Service Fabric 部署失败?

azure - 无法将 Web 包部署到 Azure DevOps 上的应用服务

node.js - Azure DevOps 自托管代理报告 NPM 版本错误

c# - Azure AD B2C - IDX20803 : Unable to obtain configuration from: 'System.String' .(.Net 5 Web API + Angular )

azure - 使用 Add-AzureVHD commandlet 在 Azure Powershell 中上传 VHD 时出现问题