Комментарии 3
Хо-хо. Как это знакомо. Как-то я тоже извел кучу времени (1-2 недели примерно), чтобы тесты старого legacy проекта вместо полутора часов выполнялись за 5-8 минут.
Пришлось переделать вообще все: сделаны локальные репозитории, матрешка dind заменена монтированием сокета внутри контейнера runner-а (чтобы образы каждый раз заново не качались), postgres стартовал с настройками, жертвующими надежностью в угоду скорости (unlogged, fsync и иже с ними), сами тесты гонялись в несколько потоков в зависимости от числа процессоров, использовались обновляемые подготовленные дампы базы данных, чтобы сэкономить на миграциях, на сборке использовались подготовленные и регулярно обновляемые образы docker с уже установленными зависимостями.
Ну и в самих тестах довольно много пришлось переделать.
Если вопрос именно в тестах - то лучше подготовить образ с инструментарием нужным и через docker run
запускать тесты, подсовывая сорцы и кеши через volume.
В принципе, подобный подход применим и для сборки образов - через docker run
собираются артефакты и потом отдельно пакуются в образ.
Как Василий ускорял сборку тестов