сегодня закончил перевозить последнее приложение на такую схему деплоя
ощущения просто бомбические
за месяц испытаний эта схема прям очень хорошо себя показала; да, есть косяки, но без них никуда
из плюсов:
1. дополнительный шаг билда образа позволяет заранее выявить, соберется ли вообще приложение на деве/проде; локально может оно все и отработает, но всякое бывает и лучше перестраховаться + такой подход потихоньку приближает нас к переезду в кубер; реджистри используется пока что локальный
2. прогон линтеров и тестов отдельными шагами в абсолютно изолированном окружении здорово помогает выявить косяки в настройке окружений, конфигах стилей, линтеров, а самое главное — тестах; нет ничего лучше узнать, что оказывается твои тесты валятся налево и направо, если поставить проект с нуля
сюда же к плюсам можно отнести отсутствие необходимости держать тестовые базы в основной базе, которая используется для реальных приложений, так как база сейчас поднимается для каждого пайпа своя и потом грохается со всеми потрохами
3. деплой по кнопке заслуживает отдельных восторгов
мне больше не надо ничего деплоить!
мое дело теперь простое — написать/исправить функционал, протестировать локально, запушить в отдельную ветку и сдать это все QA вместе со ссылками на пайп для раскатки на тестовый контур и МР в мастер; все! я спокойно живу дальше, куа сама раскатывает в дев, тестит и при прохождении тестирования сама прожимает "мерж" и функционал улетает на прод
херовый подход? может быть, но как и всегда главное то, что этот подход работает и работает весьма хорошо, если вы доверяете работу не макакам
4. креды больше не хранятся в чистом виде в репе
теперь все необходимые для ci/cd переменные заводятся через переменные в гитлабе, это здорово упрощает жизнь
конечно, перменные гитлабы лучше, чем репа, но лучше бы это вообще был vault
5. жизнеспособность
недавно взяли новый проект, с нуля, хостится он не у нас (уже раскатали дев-версию), там ровно такая же схема ci/cd и оно очень даже хорошо работает, при том что все было сделано посредством ctrl+c/ctrl+v из соседнего проекта, только креды ssh поменяли в переменных в гитлабе
из минусов:
1. мы теперь делаем билд для каждой ветки каждого проекта
это сжирает просто тонну места; я об этом сразу не подумал, а после перевода нескольких приложений на билды на следующий день гитлаб просто лег и не поднимался. потому что места на серваке на осталось
пришлось в экстренном темпе изучать способы зачистки места на серваке — от очистки прометеуса гитлаба до полного сброса билд-кеша докера (спойлер — это оказалось самым эффективным, очистилось 70гб)
2. ждать выкатки на дев щас приходится конечно чуть подольше
однако это решается тем, что это больше не моя забота, я только ссылки на пайпы для раскатки отдаю 😀
3. это оказалось сложнее, чем предполагалось
когда ты что-то делаешь в первый раз, то море по колено, но море оказалось примерно на уровне жопы
приложений много (штук 10 или 11) — если где-то есть косячный кусок кода деплоя, то править его придется во всех местах
к счастью, это делается неспешно, можно с любой задачей эти правки затаскивать
тут конечно вообще идеальным был бы вариант выносить все что связано с деплоем в отдельную репу и править только в одном месте; дорастем, надеюсь
больше сказать пока нечего, маленькими шажками идем к светлому будущему!
Добавить комментарий