在 Azure Pipeline 任务中循环遍历多个参数
Looping over multiple parameters in Azure Pipeline task
我正在尝试创建 Azure 管道。但是我在其中循环 Azure 任务时遇到问题。我在下面通过一个简化的例子解释了我面临的问题。
我希望通过此管道创建多个 Azure Web 应用程序。每个 webapp 都有一个使用 --startup-file
传递给它的命令,这个命令包含一个参数。要创建的应用程序数量和传递给每个应用程序的参数在触发管道时作为运行时参数提供
例如。
如果 NUMBER=3 且 ARGUMENTS=24,56,123
那么每个 Azure 网络应用 --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
中循环任务并通过迭代 NUMBER
和 ARGUMENTS
在 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 任务时遇到问题。我在下面通过一个简化的例子解释了我面临的问题。
我希望通过此管道创建多个 Azure Web 应用程序。每个 webapp 都有一个使用 --startup-file
传递给它的命令,这个命令包含一个参数。要创建的应用程序数量和传递给每个应用程序的参数在触发管道时作为运行时参数提供
例如。
如果 NUMBER=3 且 ARGUMENTS=24,56,123
那么每个 Azure 网络应用 --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
中循环任务并通过迭代 NUMBER
和 ARGUMENTS
在 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