Top.Mail.Ru

Система сквозных релизов для многомодульного проекта

При разработке распределенного монолита большой командой к релизу накапливается много задач. Это вызов для ответственного за выпуск релиза инженера - ему приходится проводить много времени на ревью правок и запуске пайплайнов для модулей проекта.

Кроме этого отдельным вызовом становится сбор релиз ноутс с привязкой к задачам из таск трекера.

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

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

Итоги:

Реализована система, позволяющая в несколько кликов собрать и выпустить релиз на основе данных из тикетной системы.

Задача:

Упростить управление релизом, минимизировать ручные операции при релизе, сделать удобную привязку к задачам в тикетной системе

Период работы

Примерно 1 неделя, с учетом сбора требований, согласования релизного цикла на административном уровне, тестирования

Команда

DevOps инженер, релиз инженер, менеджер проекта

Используемые инструменты:

Gitlab CI, Jira, Python

Решение:

Было принято решение, что источником сквозной версии релиза будет Jira.
На старте спринта при планировании выделяется версия будущего релиза.
Для каждой задачи, которая идет в работу, проставляется эта версия и изменяемый компонент. Если правки сквозные, то указывается несколько компонентов.

Чтобы упростить работу ответственному за поставку инженеру был написан скрипт и построена система наследуемых пайплайнов.

При запуске скрипт принимает на вход требуемую версию релиза в виде параметра, после чего получает полный список задач и компонентов, входящих в релиз, из API таск трекера.

Далее, для каждого проекта, скрипт через Gitlab API создает мерж реквесты в релизную ветку, проверяет отсутствие конфликтов. Если проблем не найдено - то генерируется и запускается пайплайн сборки.

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

В назначенное время, ответственный за релиз запускает деплой.

Результатом работ стали:
  • Прозрачная для команды привязка задач из трекера к коду
  • Автоматизированы рутинные процессы по сборке релиза
  • Трудозатраты на релиз сокращены с нескольких дней до часа
Обсудить проект_
Если у вас есть ИТ-проблема, оставьте ваши контакты, и мы поможем составить план ее решения. Обещаем не слать спам.
Нажимая, я говорю «Да»
политике конфиденциальности
hello@softwarecats.dev
Новосибирск, ул. Демакова
23/5, оф.308
Контакты_

Еще про наши проекты: