Цикл по нескольким параметрам в задаче Azure Pipeline

Я пытаюсь создать Azure Pipeline. Но у меня возникла проблема с зацикливанием в нем задачи Azure. Ниже я объяснил на упрощенном примере проблему, с которой я столкнулся.

Я надеюсь создать несколько веб-приложений Azure с помощью этого конвейера. Каждому веб-приложению передается команда с использованием--startup-fileи эта команда включает аргумент. Количество создаваемых приложений и аргумент для передачи каждому из них предоставляется в качестве параметра среды выполнения при запуске конвейера.
Например, если ЧИСЛО =3 и АРГУМЕНТЫ =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   

Конвейер запрашивает у пользователя количество создаваемых веб-приложений и строку аргументов, разделенных запятыми, для передачи им. Шаг конвейера Azure, определенный в main.yaml передает эти два параметра в шаблон (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 и назначьте и в команде Azure CLI, повторяя NUMBER а также ARGUMENTS?

1 ответ

Решение

Трещина 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
Другие вопросы по тегам