• дыбр погроммирование проектное будем называть вещи своими именами: опенсорс и другие проекты вне работы — это хобби до тех пор, пока не приносит денег.

    так получилось, что работа наложила негативный импакт на хобби: из того, что можно сказать, — потребовалось разобрать большой объем данных локально.

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

    установка с нуля — 3 часа времени + удар по RAM. с 6 гигами собирается, выделяешь докеру меньше — сборка падает. ну и со временем удар по месту на жёстком диске. ну, понятно, что локально всё собирается на ура!

    решил настроить CI. не подумал, что под капотом будет тот же докер, только не локально. поэтому сразу же напоролся на те же грабли. пришлось разобраться.

    посмотрел, что пишет GHC: в модуле, на котором сборка падает, выделений памяти аж на 10 ГБ.

    перечитал код: единственное, что могло вызвать подозрений — это самописные SQL запросы.

    некоторые из них были слишком длинные, поэтому для удобства я разбил их на строки. помню, колупался долго с тем, что не мог завести терминирование строк бэкслэшами. плюнул, и сделал через (<>).

    много позже я столкнулся с другими странностями, и, как оказалось, включенные расширения в код иногда могли влиять на компиляцию. так и тут, @qnikst подсказал, что CPP мог влиять. А CPP у меня включен глобально для всего проекта в cabal файле.

    переделал запросы, и отлегло. проект даже стал собираться быстрее. да, CI завёлся, билды с него встали отлично.

    в докере нужда отпала. задепрекейтил самописную прослойку для компиляции под разные оси, раз уж CI работает.

Replies (0)