В динамичной среде непрерывной интеграции и непрерывного развёртывания (CI/CD) поддержание стабильности системы в критические периоды, такие как праздники, запуски продуктов или интервалы обслуживания, может быть сложной задачей. Внедрение нового кода в периоды пиковой активности повышает риск возникновения проблем, влияющих на пользовательский опыт. Чтобы достичь баланса между выпуском новых версий приложения и стабильностью, командам разработчиков может потребоваться заморозка развёртывания на уровне группы — стратегическая пауза в выпуске новых версий кода между группами в определённых ветках или средах. Учитывая, что GitLab можно использовать как для непрерывной интеграции, так и для непрерывного развёртывания, функция заморозки развёртывания GitLab призвана удовлетворить именно эту потребность.

Заморозка развёртывания, применяемая на уровне проекта, может предотвратить непреднамеренные релизы в производственной среде в течение заданного периода времени. Также, она помогает снизить неопределённость и риски при непрерывном развёртывании изменений в рамках одного проекта.

Однако у большинства команд нет одного проекта, представляющего всю их производственную среду. Учитывая, что заморозка развёртывания устанавливается на уровне проекта, управление и ее применение для множества проектов может быть сложной и подверженной ошибкам задачей, что приводит к непредсказуемости и сбоям. Необходимость автоматизированного кросс‑проектного решения для обеспечения стабильности очевидна.

Что такое групповая заморозка развёртывания?

Проект «Group Deploy Freeze project» выводит концепцию заморозки развёртывания отдельных проектов на новый уровень. Он позволяет применять одни и те же ограничения развёртывания к одному или нескольким проектам в группе GitLab из пользовательского интерфейса GitLab.

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

Перечислим основные преимущества групповой заморозки развёртываний.

1. Централизованное управление

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

2. Синхронизация в рамках всей группы

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

3. Оптимизированное взаимодействие

Видимость изменений в командах разработки и эксплуатации позволяет эффективно координировать их усилия.

Как использовать групповую заморозку развёртывания GitLab

Благодаря групповой заморозке GitLab CI становится универсальным инструментом автоматизации для внесения изменений, связанных с операциями, таких как заморозка развёртывания для нескольких проектов.

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

Предварительные требования

Прежде всего, вам потребуется активная учётная запись GitLab с необходимыми правами для доступа и управления проектами в целевой группе GitLab. Также, вам нужен будет персональный токен доступа GitLab (PAT). PAT‑токен GitLab необходимо сгенерировать с правами на чтение и запись в проекты в целевой группе GitLab через API GitLab. Этот токен будет использоваться скриптом Python для аутентификации запросов API.

Среда Python — убедитесь, что на вашем компьютере или в среде, в которой вы планируете запустить скрипт настроена среда Python. Библиотеки Python — установите необходимые библиотеки Python, используемые скриптом. К ним относятся requests, envparse и python‑gitlab. Для установки этих библиотек можно использовать pip.

Сведения о группе GitLab — укажите группу GitLab, для которой вы хотите управлять заморозкой развёртывания. Вам потребуется слаг (путь) группы, чтобы указать, в какой группе будет р��ботать скрипт. Также, выберите часовой пояс, в котором вы хотите запланировать заморозку развёртывания. Выбор часового пояса гарантирует точное определение времени периодов заморозки в соответствии с предпочитаемым часовым поясом вашей организации.

Начало работы

Чтобы использовать GitLab CI для разработки и автоматизации процесса пакетного обновления заморозок развёртывания для всех проектов, создайте форк проекта Deploy Freeze. Данный форк затем создаст конвейер CI/CD, который будет итеративно обрабатывать ваши проекты и применять желаемый график заморозки развёртывания. Вы можете настроить этот проект в соответствии с рабочим процессом вашей организации.

Предоставленный проект содержит файл.gitlab‑ci.yml и скрипт Python, предназначенный для автоматизации управления заморозками развёртывания для нескольких проектов в группе GitLab. Он использует API GitLab и различные библиотеки Python для создания и удаления периодов заморозки развёртывания и предназначен для запуска в составе конвейера CI/CD для обеспечения стабильности кода во время развёртывания в группе GitLab.

Далее выполните коммит изменений в репозиторий, чтобы запустить конвейер CI/CD.

Запуск конвейера

Для того, чтобы запустить выполнение конвейера необходимо в пользовательском интерфейс GitLab проекта Group Deploy Freeze перейти в раздел Pipelines. После этого выбрать опцию «Run Pipeline» в правом верхнем углу страницы. Вы должны увидеть переменные, определенные в файле.gitlab‑ci.yml, например: Установка переменных.

Определите значения переменных FREEZE_START, FREEZE_END, CRON_TIME_ZONE и GROUP_SLUG, в формате расписания Cron, затем запустите конвейер. Вы можете определить несколько периодов заморозки, перейдя к следующей строке в переменных FREEZE_START и FREEZE_END.

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

Мониторинг и проверка

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

Проверьте проекты вашей группы GitLab на наличие заморозок деплоя в течение указанных периодов.

Настройка и итерации

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

Вы можете оптимизировать функцию группового развертывания, следуя документации по заморозке, в которой описаны шаги по настройке задания.freezedeployment, которое может условно блокировать задания развертывания при наличии переменной CI_DEPLOY_FREEZE. Включив шаблон.freezedeployment и расширив его в файле.gitlab‑ci.yml вашего проекта, вы можете предотвратить развертывания во время периодов заморозки, обеспечивая стабильность кода. После окончания периода заморозки возможно ручное вмешательство в процесс развертывания, что обеспечивает контролируемые и предсказуемые процессы развертывания во всех проектах группы.

Результаты

Распространив заморозку развертывания на уровень группы, команды могут легко оптимизировать и улучшить свои стратегии развертывания, чтобы обеспечить согласованность и предотвратить непреднамеренный выпуск в производство в течение указанного вами периода времени, будь то крупное корпоративное мероприятие или праздник. Благодаря возможностям API GitLab, конвейеров CI/CD и гибкости сценариев Python Group Deploy Freeze станет вашим союзником в поддержании стабильности и предсказуемости кода в различных проектах.

Потянете ли программу курса «CI/CD на основе GitLab»? Пройдите входной тест и узнаете.
Потянете ли программу курса «CI/CD на основе GitLab»? Пройдите входной тест и узнаете.

Автоматизация заморозок — лишь один из инструментов зрелого CI/CD. Тем, кто хочет глубже понять устройство пайплайнов GitLab, работу раннеров, безопасность доставки и практику построения надёжных workflow — будет полезен курс «CI/CD на основе GitLab».

Если хотите понять формат обучения — записывайтесь на бесплатные демо-уроки от преподавателей курса:

  • 11 декабря: «Terraform: как работать с ним через GitLab». Записаться

  • 18 декабря: «Принцип DRY в GitLab CI: как избавиться от дублирования и навести порядок в пайплайнах». Записаться

Комментарии (0)