Хотя инструменты CI могут запускать тест для каждого запроса на вытягивание при его открытии и для каждой ветки после его отправки, этого может быть недостаточно, чтобы избежать неработающих сборок.
Например, если у вас есть два запроса на вытягивание, которые изменяют зависимый код, тесты могут пройти по каждому запросу на вытягивание независимо, и Github разрешит слияние, но после слияния сборка может прерваться.
Чтобы избежать этой проблемы, вы можете настроить Github так, чтобы он блокировал запрос на вытягивание, который не обновлен с помощью master. Но это может не масштабироваться с вашей командой. Эта конфигурация означает, что каждый отдельный инженер должен:
Обновите текущую ветку с помощью master. Дождитесь повторного прохождения теста. Слейте запрос на вытягивание, когда он будет готов. Если до этого будет объединен другой запрос на включение, повторите шаги, описанные выше.
- MergeQueue отслеживает все запросы на вытягивание в вашем репозитории Github.
- Вместо того, чтобы вручную объединять запросы на слияние, инженеры помечают их, когда они готовы.
- MergeQueue отдает приоритет готовым PR на основе FIFO.
- В зависимости от вашей конфигурации MergeQueue выполняет некоторые операции с PR.
- Слияние PR при соблюдении всех критериев слияния.
- Сообщает и удаляет из очереди запросы на вытягивание, которые не соответствуют критериям.