Выбор ответа Senior CI и параллельный запуск обновлено

Неравные шарды

Вопрос

Набор разбит на 4 шарда по количеству тестов. Три идут по 5 минут, один 25. Как сократить общее время?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Делить по истории длительностей и разбить гигантские файлы тестов. Общий прогон равен самому длинному шарду.

Варианты ответа

  1. Добавить ещё воркеров в долгий шард, а остальные оставить как есть
  2. Отключить самые медленные тесты и перенести их в ночной прогон
  3. Делить по истории длительностей и разбить гигантские файлы тестовправильный ответ
  4. Увеличить таймаут долгого шарда, чтобы он не упирался в лимит CI

Разбор

Общий прогон равен самому длинному шарду. Деление по количеству игнорирует длительность, а деление по истории времени (жадно: самый долгий тест в наименее загруженный шард) выравнивает части. Если раннер делит по файлам, помогает разбиение больших файлов. Отключение тестов теряет покрытие, таймаут ничего не ускоряет, а воркеры в одной джобе матрицы обычно одинаковые.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.