Azure Devops - как предотвратить одновременное выполнение нескольких конвейеров?
У меня два разных конвейера с 3 активированными агентами. Моя проблема в том, что один из моих конвейеров выходит из строя, если одновременно выполняется несколько сборок (потому что tets конфликтуют), поэтому я хочу поставить в очередь запрос на сборку, если для этого конкретного конвейера работает еще один.
Первое, что я пробовал, это использовать возможности и требования для идентификации одного агента, поэтому для этого конвейера всегда доступен только один агент, но он не работает с агентами, размещенными на сервере Microsoft, и это то, что у меня есть. Затем я подумал, что, возможно, создав 2 пула агентов, я могу указать в своей конфигурации конвейера, чтобы использовать один из них, но еще раз я не могу создать несколько пулов для агентов, размещенных в Microsoft.
Как я могу предотвратить одновременное выполнение нескольких сборок?
Спасибо!
2 ответа
Наконец, я решил проблему перехода от сборки к сборке + выпуск.
Решение @Fairoz не работает для меня, потому что одновременное выполнение нескольких сборок из разных веток. Мне нужно заблокировать конвейер до тех пор, пока не перестанут выполняться сборки. В Azure Devops это можно сделать с помощью возможностей + требований, но он не работает с агентами, размещенными на сервере Microsoft, поэтому я переместил всю логику тестирования в выпуск, который развертывается в CI, и оставил сборку, которая просто выполняет Артефакт.
Итак, рабочий процесс: PR в Github > Trigger Build > Создать артефакт с моей веткой> Trigger release > Release code to CI and run the tests.
Azure Devops позволяет контролировать количество параллельных запусков одного этапа, поэтому я ограничил число параллельных задач до 1, и все.
Вы можете просто включить опцию "Пакетные изменения во время сборки", чтобы выполнять по одному конвейеру за раз.
Здесь есть аналогичный вопрос: "Сборка после успешного выполнения предыдущего" в Azure Devops