Конвейер выпуска Azure Devops - ставить новый выпуск в очередь, когда выполняется предыдущий

Наши конвейеры выпуска настроены в несколько этапов. Для каждого запроса на вытягивание, который объединяется в мастер, автоматически создается новый выпуск. У нас естьDEV => TST => REL => PRD.

Теперь мы также используем эти этапы для выполнения автоматических тестов. Итак, после DEV есть этап для проведения базового автоматизированного тестирования (AT). Итак, мы получаемDEV => AT => TST => REL => PRD. AT имеет зависимость от DEV, чтобы работать без сбоев.

Скриншот нашего релизного конвейера

Наша проблема в следующем. Когда Release X выполняет AT и тем временем объединяется запрос на вытягивание, что приводит к развертыванию в DEV для Release X+1, это вызывает сбой AT для Release X. Есть ли способ заставить Release X+1 ждать в очереди, пока AT не будет завершена для Release X?

Мы, возможно, также можем решить эту проблему, избегая простоев на DEV во время развертывания, или изолировать тесты в среде, на которую не влияют автоматические развертывания и т. Д. Но на основе того, что у нас есть, и времени, которое у нас есть для улучшения, мы хотели бы знать, есть ли способ сделать экземпляры конвейера более осведомленными друг о друге...

1 ответ

Решение

Но исходя из того, что у нас есть, и времени, которое у нас есть для улучшения, мы хотели бы знать, есть ли способ сделать экземпляры конвейера более осведомленными друг о друге...

Извините, но я боюсь, что у нас сейчас нет такой готовой функции.

Вот одно обсуждение аналогичной темы, вы можете отслеживать его и оставлять комментарии, чтобы поделиться своим мнением. (Поскольку он предназначен для конвейера сборки, а не для выпуска, вы можете опубликовать запрос новой функции для конвейера выпуска)

И как временный обходной путь:

Вы можете переместить шаги из стадии AT в стадию DEV. Создать вакансию агентаAT и переместите содержимое этапа AT в задание AT на этапе DEV и убедитесь, что вы отключили параллельное развертывание этапа в Deployment queue settings под Pre-deployment conditions:

Этот параметр может работать на уровне стадии, но не на уровне выпуска. Таким образом, это работает только тогда, когда вы перемещаете контент со стадии AT в стадию DEV. (Вы также можете получить подсказки по этой аналогичной проблеме)

Чтобы вызвать api azure DevOps rest в Gates:

1. создать Generic service connection:

URL: https://vsrm.dev.azure.com/OrgName/ProjectName/_apis/release/releases/3?api-version=5.1

Оставьте поле имени пользователя и пароля пустыми.

2. изменить настройки по умолчанию "AuthToken": "$(system.AccessToken)" к "Authorization": "Bearer $(System.AccessToken)".

Затем остальной api будет выполнен с токеном из текущего контекста.

Другие вопросы по тегам