Основное
Тут рассказано про весь цикл CI/CD – от набора строк кода до выпуска новых фич в доступ для каждого.
Сервисы и плагины
Для деплоя сервисов мы используем ArgoCD, для плагинов – git-sync.
Все сервисы, плагины и прочие кастомные решения проходят через свои пайплайны – в чем-то схожие, но все равно разные – и версионирование, различное для каждой из сред.
Для сборки Docker образов мы используем селфхостед GitHub Actions раннеры – получаем больше производительности и не тратим минуты от Github Free for organizations.
Прочие решения
Для прочего опенсорсного ПО, которое мы используем (базы данных, прокси-менеджеры, брокеры сообщений и т.д.) мы соблюдаем IaC (Infrastructure as Code) принципы. Все манифесты, конфиги, секреты и прочие Kubernetes ресурсы сохраняются в текстовом формате и включаются в резервные копии. Благодаря такому подходу, в критическом случае, мы имеем возможность несколькими командами поднять достаточную инфраструктуру, чтобы проект мог дышать, и погрузиться в расследование возникнувшей проблемы и оценку ущерба.
Процесс разработки
Репозитории ветками условно разделены на три части:
main – главная ветка, которая уходит на прод. Билды для этой ветки версионируются, имеют зависимости для обновлений и строгое ревью.
dev – второстепенная ветка, которая уходит на дев. Сюда попадают готовые и прошедшие ревью фичи, улучшения и несрочные багфиксы.
ветки, отделенные от dev – ветки, направленные на конкретные изменения – будь то фикс или новая фича. Ветки имеют формат
<issue_id>/<краткое_название>
.
В кратце, полный жизненный цикл, который проходит каждое изменение, выглядит так:
пуш в отдельную ветку -> ревью изменений -> мердж в дев -> тестирование в dev окружении -> повторное ревью -> мердж в main -> выпуск в продакшен
Last updated