Pull to refresh

Comments 3

Хо-хо. Как это знакомо. Как-то я тоже извел кучу времени (1-2 недели примерно), чтобы тесты старого legacy проекта вместо полутора часов выполнялись за 5-8 минут.

Пришлось переделать вообще все: сделаны локальные репозитории, матрешка dind заменена монтированием сокета внутри контейнера runner-а (чтобы образы каждый раз заново не качались), postgres стартовал с настройками, жертвующими надежностью в угоду скорости (unlogged, fsync и иже с ними), сами тесты гонялись в несколько потоков в зависимости от числа процессоров, использовались обновляемые подготовленные дампы базы данных, чтобы сэкономить на миграциях, на сборке использовались подготовленные и регулярно обновляемые образы docker с уже установленными зависимостями.

Ну и в самих тестах довольно много пришлось переделать.

А можно tablespace Postgres вообще в оперативную память засунуть. Я использовал circleci/postgres:13-postgis-ram (но это как пример).

Если вопрос именно в тестах - то лучше подготовить образ с инструментарием нужным и через docker run запускать тесты, подсовывая сорцы и кеши через volume.

В принципе, подобный подход применим и для сборки образов - через docker run собираются артефакты и потом отдельно пакуются в образ.

Sign up to leave a comment.