Евгений Сайты › Peppers Сбер ID
Сайты, SEO и GEO, реклама, чат-боты, ИИ и дизайн | Москва
Рейтинг
9 371
№ 111 в каталоге
Отзывы
Профессионализм
9/10
Коммуникация
9 /10
Город
Москва
Опыт работы
11 лет
На сайте с
2016 года
Юридический статус
Самозанятый
Freelance.Boutique
Премиум-сервис для лучших исполнителей

Автодеплой сайта интернет-магазина для кемпинга: CI/CD в GitLab, окружения в Docker Compose и Docker, Git-ветки и релизы без FTP

Используемые навыки CI/CD Docker Docker Compose Git GitLab

Описание

Выкладка сайта российского интернет-магазина товаров для кемпинга и походов раньше шла по FTP на боевой сервер, а теперь идёт автоматически: Евгений Росляков настроил автодеплой, где код проверяется сам и уходит в продакшен по кнопке. Сайты и серверы он делает с 2016 года. Самозанятый, работает по договору, организациям выдаёт закрывающие документы. Сам он в Москве, с клиентами из других городов работает удалённо.

В магазине два разработчика на аутсорсе и маркетолог. Правки разработчики заливали по FTP прямо на боевой сервер. После релизов то и дело ломалась корзина, заказы терялись, пока кто-нибудь не замечал. Откатить было нечем: предыдущую версию нигде не хранили. Тестовая копия давно отличалась от боевой, и что работало на ней, на боевом вело себя иначе.

Больше всех страдал маркетолог. Перед акциями он не знал, можно ли просить разработчиков о правках, ведь каждая заливка была риском.

Разработчики сидят в разных городах и не всегда пересекаются по времени. Кто что залил и в каком виде сейчас боевой код, выясняли перепиской. Один раз правки двух человек перезаписали друг друга, и пропал целый блок сайта.

Задача: сделать выкладку скучной. Разработчик отправляет изменение, коллега смотрит, автоматика проверяет, версия уезжает на сервер. Если что-то пошло не так, прежнюю возвращают за минуты.

Решение

Начал с Git. Завёл репозиторий и договорился о ветках: основная для боевого кода, рабочая для разработки, на каждую задачу своя. В основную изменения попадают только через merge request, и его всегда смотрит коллега.

Систему выбрал GitLab и поставил её на сервер клиента. Это открытая редакция GitLab CE, платная лицензия не нужна, а код магазина остаётся у владельца. Для российской компании это спокойнее, чем держать репозиторий в стороннем сервисе.

Потом собрал CI/CD. На каждый merge request запускаются проверка кода и автотесты. После слияния сборка делает образ Docker и кладёт его в реестр GitLab. На тестовый сервер образ уходит сам, на боевой — кнопкой, когда на тестовом всё посмотрели.

Окружения описал в Docker Compose: сайт, база, кеш и очередь заданий. Основной файл общий, различаются только переменные. Поэтому разработка, тест и боевой сервер собираются одинаково, и фраза «у меня работало» потеряла смысл.

Миграции базы выполняются в пайплайне перед запуском новой версии. Откат — запуск предыдущего образа, это минуты. Пароли и ключи лежат в защищённых переменных GitLab, не в коде и не в почте разработчиков. Выкладку на боевой сервер разрешил только в рабочее время, чтобы вечером никто не чинил корзину в одиночку.

Для разработчиков написал инструкцию на одну страницу: как создать ветку, открыть merge request и откатить релиз.

Результат

Релиз стал короткой процедурой. Разработчик открывает merge request, коллега смотрит, проверки идут сами, а на боевой сервер версию отправляет кнопка. Доступ по FTP закрыт совсем.

Тестовая копия теперь повторяет боевой сайт, поэтому ошибки в корзине ловятся до покупателей. Если что-то проскочило, прежний образ возвращают быстро, и заказы не лежат часами. Двое разработчиков больше не перезаписывают друг друга, потому что каждый работает в своей ветке. Маркетолог планирует акции спокойнее: просьба о правке перестала быть риском.

Честное ограничение: автотесты ловят только то, что в них описано. Корзину и оформление заказа я покрыл, остальные части сайта защитятся по мере того, как разработчики добавляют тесты. Это работа на несколько месяцев, в инструкции я записал, с каких мест начинать. Откат образа не отменяет изменений в базе, поэтому миграции нужно писать аккуратно, чтобы их можно было пережить без возврата.

Следующим шагом клиент хочет добавить автоматическую проверку скорости страниц и отдельное окружение под каждую крупную задачу.

Если ваш сайт до сих пор обновляется заливкой файлов и каждый релиз похож на лотерею, пишите на freelance.ru. Расскажите, на чём он сделан и сколько людей его правит, а я предложу схему выкладки под вашу работу.

Оценили проект:

Другие проекты

Все проекты →
ИИ и Нейросети Перенос отчётности агрохолдинга с Tableau, QlikView, Cognos, Hyperion и Crystal Reports в одну российскую BI-систему: единая модель данных и сверка цифр
Перенос отчётности агрохолдинга с Tableau, QlikView, Cognos, Hyperion и Crystal Reports в одну российскую BI-систему: единая модель данных и сверка цифр
12
Дизайн и Брендинг Мобильная игра на Unity для осенней кампании производителя детских соков: собери фрукты в сад, без рекламы, покупок и сбора данных
Мобильная игра на Unity для осенней кампании производителя детских соков: собери фрукты в сад, без рекламы, покупок и сбора данных
17
Веб-разработка и IT Сайт GEONIKA SRF на 4 языках: научная методика геологоразведки, международное SEO и продвижение, оптимизация скорости страницы, HTML5 и CSS3
Сайт GEONIKA SRF на 4 языках: научная методика геологоразведки, международное SEO и продвижение, оптимизация скорости страницы, HTML5 и CSS3
49
Веб-разработка и IT Создание сайта для производителя мебели для стоматологических клиник: дизайн в Figma, вёрстка на Tailwind CSS, тёмная и светлая тема, быстрая загрузка
Создание сайта для производителя мебели для стоматологических клиник: дизайн в Figma, вёрстка на Tailwind CSS, тёмная и светлая тема, быстрая загрузка
19