Введение в непрерывную интеграцию/развертывание (CI/CD)
Почему автоматизация стала стандартом разработки
Скорость выпуска ПО и обновлений становится конкурентным преимуществом компаний. Раньше процесс доставки новой версии ПО занимал недели или месяцы. При этом сохранялся риск ошибок, возникали простои, а пользователь редко получал обновления. Методология CI/CD позволяет выстроить процессы написания кода, тестирования, доставки и развёртывания в автоматизированный конвейер, а значит, ускорить доставку ПО.



Роль CI/CD в DevOps-подходе
Код, который пишут разработчики (Dev, от анг. development), не существует отдельно, а запускается в определённом окружении на оборудовании: физических или виртуальных машинах, которые нужно администрировать и конфигурировать (Ops, от англ. operations). DevOps-инженер — связующее звено между кодом и инфраструктурой: он обеспечивает гарантию доставки кода в продакшен (рабочую среду), отвечает за параметры развёртывания, управляет ИТ-инфраструктурой.

CI/CD — основа методологии DevOps, которая автоматизирует процессы:
- сборки;
- тестирования;
- настройки;
- развёртывания ПО.
Благодаря настроенным CI/CD-процессам разработчику достаточно изменить строку кода, а программа сама запустится, протестируется и отправится в промышленную эксплуатацию.
CI (Continuous Integration) — непрерывная интеграция
CI (Continuous Integration) подразумевает непрерывную интеграцию изменений кода каждого разработчика с общей веткой. Программист вносит изменения в основную ветку системы контроля версий (например, Git или GitVerse), а код проходит автоматические тесты для проверки, не сломался ли проект после изменений. Для этого подключают исполнители тестов (тест-раннеры), которые запускают автопроверки, например, при объединении веток или перед объединением в момент создания запроса на объединение.
Практика небольших фиксов (small commits) и разработки на основе главной ветки (trunk-based development)
Подход «маленькие фиксы» (микрокоммиты, small commits) — это метод, при котором изменения вносятся небольшими логическими порциями. Вместо одного большого изменения «Добавил страницу профиля» появляются 3–4 мелких: «добавил код HTML», «подключил стили CSS», «настроил JS-скрипты». Практика обеспечивает быстрый откат изменений и возможность отладки.
Разработка на основе главной ветки (trunk-based development, TBD) — подход к управлению версиями, при котором разработчики минимум один раз в день сливают изменения в главную ветку: trunk (master, main). Это позволяет избежать сложных конфликтов слияния (merge hell) и уменьшить количество долгоживущих веток. Чем дольше существует ветка, тем сложнее в будущем актуализировать её состояние и решать конфликты слияния. Чем быстрее изменения будут добавлены в основную ветку, тем быстрее код пойдёт в релиз.
CD (Continuous Delivery и Continuous Deployment) — непрерывная доставка и развёртывание
Continuous Delivery (CDelivery) — это непрерывная доставка артефакта, собранного в процессе непрерывной интеграции CI, на стенды приложения. Continuous Deployment (CDeployment) — это его непрерывное развёртывание (деплой).
Разница между Continuous Delivery и Continuous Deployment
Непрерывная доставка подразумевает автоматическую подготовку к релизу. Но доставка в производственную среду осуществляется вручную: буквально после нажатия на кнопку. ИТ-инженер собирает артефакт и выставляет конкретную версию, которая будет доставлена на стенд.
При непрерывном развёртывании любое изменение, прошедшее тесты, автоматически доставляется пользователю. Раскатка происходит после объединения с основной веткой. Доставка вручную не требуется.
Как работает конвейер CI/CD (пайплайн)
CI/CD подразумевает этапы, идущие друг за другом:
- сборка;
- тестирование;
- развёртывание.
Они выстраиваются в цепочку автоматизированных процессов — CI/CD-конвейер (пайплайн, pipeline). Специфика шагов в нём зависит от принятых на проекте практик: например, можно добавить проверку безопасности для защиты от утечек или вредоносного кода.
Этапы конвейера (пайплайна): сборка (build) → тестирование (test) → проверка безопасности (security) → развёртывание (deploy)
Основные стадии релизного конвейера с инструментами представлены в таблице:
| Этап | Инструменты для разработчиков и команды на проекте |
| Триггер для запуска (автоматически или вручную) | Механизмы опросов (poll) в Jenkins или отправка механизма перехвата (хука) от Git WebHooks |
| Проверка кода | Статический анализ, Platform V Works::CodeScanner, SonarQube, JetBrains, Codacy |
| Компиляция/сборка (build) | Maven, Gradle, Node JS. Частая практика — упаковка в Docker-образ |
| Тестирование | Генерация тестовых данных (Platform V Works::Test Data Management, IBM InfoSphere Optim, Delphix), нагрузочное тестирование (тесты Platform V Works::Overload, Apache JMeter, MicroFocus, LoadRunner) |
| Сканирование безопасности | Trivy, Platform V Works::CodeScanner, OWASP Dependency-Check, SonarQube, Clair, Falco, Docker scan, JetBrains, Codacy |
| Упаковка в итоговую сборку | Docker-образ, deb-пакет, бинарный файл сборки, архив |
| Приёмочное тестирование, тесты на средах разработки | Генерация тестовых данных (Platform V Works::Test Data Management, IBM InfoSphere Optim, Delphix), нагрузочное тестирование (тесты Platform V Works::Overload, Apache JMeter, MicroFocus, LoadRunner), поиск ошибок и уязвимостей |
| Доставка и развёртывание в промышленной среде | Платформы автоматического развёртывания Docker, Kubernetes, ArgoCD и Helm для управления развёртыванием |
Роль репозитория кода (GitVerse, Git)
Репозиторий кода — центральный элемент системы автоматизации. Его роли:
- триггер автоматизации CI/CD;
- хранилище конфигурационных файлов и инструкций;
- управление ветками (Git Flow);
- откат изменений (Rollback).
Автоматизация инфраструктуры (IaC)
Автоматизация инфраструктуры (IaC — Infrastructure as Code) — это подход к управлению ИТ-инфраструктурой через описание конфигураций в машиночитаемых файлах, а не через ручную настройку. Инструменты для быстрого и повторяемого развёртывания сред:
- Terraform;
- Pulumi;
- Ansible;
- CloudFormation.
Для автоматизации развёртывания приложений и оркестрации задач в ОС Platform V SberLinux OS предусмотрен инструмент Ansible Core.
Интеграция с контейнерами и Kubernetes
Конвейеры CI/CD обеспечивают автоматическую сборку, тестирование и развёртывание контейнеров в кластере.
Основные преимущества CI/CD
Плюсы автоматизации:
- ускорение поиска ошибок в коде, внесение изменений по результатам тестов;
- уменьшение ручных изменений и человеческого фактора;
- ускорение разработки и релизов;
- прозрачность и контроль этапов проекта.
Типичные ошибки при внедрении CI/CD
Переход к CI/CD — это трансформация, требующая временных и ресурсных затрат. Основные проблемы, с которыми могут столкнуться команды разработчиков:
- риски безопасности из-за неправильной настройки прав доступа;
- отсутствие автоматизированного тестирования (или минимум автотестов);
- хрупкость и медленность конвейеров, их падение;
- отсутствие стратегии отката изменений.
Минимизировать риск ошибок помогают специальные инструменты и платформы: например, Platform V Works::Orchestra R для сложных CI/CD-конвейеров или Platform V IDM для централизованного управления учётными записями.
Инструменты для построения CI/CD
Портфель «Инструменты разработки» — платформенное решение СберТеха, позволяющее построить технологически независимый сквозной производственный процесс. Командам разработки доступны ИТ-продукты для создания CI/CD-конвейеров, управления репозиториями и контейнерами Docker, тестирования ПО и иные.

Системы CI (Jenkins, GitLab CI, TeamCity)
Инструменты непрерывной интеграции, которые используются для автоматизации сборки и тестирования:
- Jenkins;
- GitLab CI/CD;
- CircleCI;
- TeamCity;
- Travis CI;
- Bamboo;
- Azure DevOps и иные.
Platform V Works Orchestra R — это, по сути, визуальный редактор конвейеров CI/CD, который позволяет обеспечить их создание и запуск. ИТ-решение СберТеха поддерживает интеграцию с инструментами CI/CD (Jenkins, Argo, Nexus, Git и иными).

За выполнение конечных операций отвечает Platform V Works Pipeliner. Это агент, который запускает скрипты сборки и развёртывания, вызова внешних приложений. ИТ-решение на базе Jenkins помогает автоматизировать процесс сборки и тестирования ПО.
Релизные и нерелизные сборки нужно где-то хранить и откуда-то скачивать. Для централизованного управления репозиториями дистрибутивов и Docker-контейнеров используют Platform V Works Artifactory. Для размещения git-репозиториев, версионного хранения кода и конфигураций создан ИТ-инструмент Platform V Works Source Control.
Контейнеризация (Docker)
Docker использует идею контейнеров. ИТ-инструмент позволяет упаковать приложение со всеми зависимостями в единую воспроизводимую изолированную среду — Docker container — для сборки, тестирования и доставки приложений. По мере усложнения ИТ-инфраструктуры контейнеры объединяют в кластеры.
Оркестровка (Kubernetes)
Чтобы управлять кластерами Kubernetes, OpenShift нужны инструменты: например, Platform V DropApp. Они автоматизируют сборку, тестирование и доставку приложений через встроенные конвейеры. Командам разработчиков доступен готовый стек на базе Argo CD для быстрого развёртывания ПО.

Инструменты управления инфраструктурой (Terraform, Ansible)
Чем сложнее инфраструктура предприятия, тем больше задач, связанных с созданием, конфигурированием, настройкой виртуальных машин. Возникает вопрос, как автоматизировать работу и уменьшить количество настроек вручную. Так появился подход «инфраструктура как код» (IaC, Infrastructure as Code). Он подразумевает, что серверы, сети, базы данных настраиваются с помощью текстовых файлов с кодом, а не вручную. Благодаря автоматизации можно создать новый сервер или точную копию рабочей среды буквально за несколько минут. Для быстрой настройки инфраструктуры проекта используют инструменты вроде Terraform и Ansible.

CI/CD и безопасность (DevSecOps)
Методология DevSecOps подразумевает встраивание проверок безопасности на всех этапах конвейера. Это нужно, чтобы:
- снизить риск утечек;
- предотвратить ошибки конфигурации;
- минимизировать уязвимости.
Встраивание механизмов SAST, DAST и SCA в конвейер (пайплайн)
Для повышения безопасности на проектах внедряют следующие решения:
- статический анализ кода (SAST);
- динамический анализ кода (DAST);
- сканирование зависимостей (SCA) и другие.
Построить безопасный конвейер разработки помогают специальные платформы: например, Platform V ASOC Control Center. Для статического анализа (контроль стандартов кода на проекте, уязвимости OWASP, CWE/SANS и др.) разработан Platform V Works::CodeScanner.
Метрики эффективности CI/CD
Оценить эффективность процессов непрерывной доставки и развёртывания на проекте помогают метрики CI/CD. По данным DORA (DevOps Research and Assessment), команды разработчиков используют следующие показатели:
- частоту развёртываний (Deployment Frequency, DF);
- время от фикса (коммита) до развёртывания (Lead Time, LT);
- частоту сбоев после развёртывания (Change Failure Rate, CFR);
- среднее время восстановления (Failed deployment recovery time, FDRT);
- частоту переделок при развёртывании (Deployment rework rate, DRR).
Известны и другие, с которыми работают команды аналитиков, инженеров по тестированию, разработчиков: время сборки (Build Time), частота сбоев сборки (Build Failure Rate).
Итоги и ключевые выводы
Автоматизация конвейера CI/CD позволяет командам быстро доставлять обновления и минимизировать риск ошибок на проекте.
Решения для проектов на импортонезависимом стеке — Platform V DropApp (автоматизация сборки, тестирования и доставки), Platform V Synapse Service Mesh (упрощение канареечных релизов), Platform V SberLinux OS Server (стабильная среда для DevOps-инструментов). Для эффективной ИТ-разработки полного цикла создана платформа Platform V Works.
