Фон
Насколько я понимаю, при создании конвейера выпуска в классическом режиме в Azure DevOps вам предоставляется возможность запустить задание с Parallelism
Планом выполнения. Выбрав этот план, вы можете предоставить переменную Multipliers
, которая будет запускать ваше задание один раз для каждой предоставленной вами переменной множителя, отключая значение переменной для каждого значения в вашей строке, разделенной запятыми.
Например, если бы я создал следующее задание конвейера выпуска:
И предоставил следующую переменную конвейера:
Мой конвейер будет запускаться 3 раза — по одному разу для каждого значения переменной.
Вопрос
Можно ли сделать то же самое с yml для конвейера сборки?
Самое близкое, что я нашел, это стратегия параллельной работы, но она не предоставляет возможности для переменной Multiplier.
Думаю, что после дальнейшего расследования я нашел ответ.
Мы можем использовать матричную стратегию в сочетании с простой логикой, чтобы расширить переменную конвейера до нескольких значений с помощью bash.
Другой вариант параллельного запуска нескольких заданий — использовать ключевое слово каждый для циклического перебора параметров и создания задания для каждого параметра.
Пример:
parameters:
- name: tenants
type: object
default:
- Tenant1
- Tenant2
- Tenant3
trigger: none
pool:
vmImage: 'ubuntu-latest'
jobs:
- ${{ each tenant in parameters.tenants }}:
- job: job_${{ tenant }}
dependsOn: [] # no dependencies, run jobs in parallel
displayName: Hello ${{ tenant }}
steps:
- script: |
echo "Hello, ${{ tenant }}!"
displayName: "Hello ${{ tenant }}"
Запускаем сборку:
Примечание:
maxParallel
).