Affected files: .trash/Pasted image 20260610224414.png .trash/Pasted image 20260610224417.png .trash/Pasted image 20260610224420.png .trash/Pasted image 20260610224422.png 00 Inbox/CIСD Конвейер для сборки и доставки продукта. Знакомство с GitlabCI и Jenkins.md
13 KiB
status, type, tags, created, updated, aliases
| status | type | tags | created | updated | aliases |
|---|---|---|---|---|---|
| seed | concept | 2025-12-17 | 2026-06-10 |
CIСD Конвейер для сборки и доставки продукта. Знакомство с GitlabCI и Jenkins
Процессы CI/CD
Пайплайны
CI/CD (Continuous integration and Continuous delivery) — широко распространенная devops-практика, подразумевающая непрерывную сборку и доставку цифрового продукта до конечной инфраструктуры.
Continuous integration
Методология, при которой изменения в исходный код вносятся последовательно и непрерывно.
Исходный код подвергается проверкам, тестируется, упаковывается в артефакт, помещается в хранилище и готовится к отправке на развертывание.
Continuous delivery
Практика, являющаяся логическим продолжением непрерывной сборки (интеграции) цифрового продукта.
Артефакт, прошедший все этапы непрерывной сборки, немедленно развертывается на конечной инфраструктуре, где в виде цифрового продуктаьвыполняет свои функции.
Цели CI/CD:
- Обеспечить последовательный и непрерывный процесс сборки, проверки, тестирования и развертывания цифровых продуктов.
- Автоматизировать процедуру сборки и доставки.
- Минимизировать возможные ошибки и облегчить процесс их исправления.
- Поддержать современный взгляд на гибкие методологии разработки.
Преимущества CI/CD:
- Максимальная автоматизация процессов.
- Своевременное обнаружение ошибок.
- Сокращение цикла получения обратной связи.
- Разделение сред разработки, тестирования и эксплуатации цифрового продукта.
- Глубокая наблюдаемость (Observability).
Распространенные этапы CI/CD:
- Создание кода / интеграция функционала.
- Модульное тестирование.
- Сборка / компилирование.
- Доставка артефакта и его развертывание.
- Дополнительные проверки.
- Сбор метрик / сбор обратной связи.
Начальный этап:
Этап создания кода (интеграции нового функционала) подразумевает наличие системы контроля версий, где осуществляется коллективная работа над исходным кодом цифрового продукта и ведется разработка функционала (исправление ошибок).
В процессах CI/CD это начальный этап сборки и доставки.
Автоматизация:
Модульное тестирование относится к логическим проверкам исходного кода, не подразумевающее запуск приложения на исполнение.
В первую очередь необходимо самим разработчикам для уверенности в отсутствии логических ошибок в разрабатываемых участках исходного кода.
Процессы CI/CD позволяют автоматизировать запуск таких проверок.
Сборка:
Сборка (компилирование) продукта из исходного кода чаще всего осуществляется с применением стандартизированной упаковки приложения, готового к запуску на конечной инфраструктуре.
Сборка часто является заключительным этапом процесса CI, далее собранный и готовый к запуску артефакт передается процессу непрерывной доставки (но могут иметь место и дополнительные проверки).
Доставка:
Доставка собранного и проверенного артефакта до конечной инфраструктуры осуществляется в процессе CD.
Доставленный и развернутый артефакт является конечным продуктом, функции которого эксплуатируют потребители.
Проверка:
В зависимости от среды, до которой был доставлен артефакт, он может быть подвергнут дополнительным проверкам, прежде чем отправиться в эксплуатацию.
Различают несколько различных видов сред цифрового продукта:
- Среда разработки (Dev).
- Среда тестирования (Test, QA, Stage, Integration, Pre-production, Uat,..).
- Среда эксплуатации (Prod).
После прохождения всех этапов процессы CI/CD не заканчиваются:
- Важно собирать обратную связь о процессе эксплуатации продукта (согласно потребительским метрикам).
- Собирать статистику (Метрики, Логи, Журналы, Трассировки).
- Процессы CI/CD не предполагают остановки и возобновляются с каждым новым коммитом и изменением в исходном коде.
Все этапы, составляющие процессы CI/CD, называются пайплайнами (Pipelines).
Создание, изменение, поддержка и совершенствование пайплайнов возможны в специализированных инструментах — сборочных конвейерах CI/CD.
Часть 3. Знакомство с GitlabCI
GitlabCI (Gitlab CI/CD) — opensource-инструмент, встроенный в систему управления версиями Gitlab (изначально выпускался как отдельный проект).
GitlabCI выполняет функции сборочного конвейера, позволяющего осуществлять все этапы CI/CD.
Преимущества GitlabCI:
- Совместимость с Gitlab.
- Простота интеграции в рабочие процессы.
- Развитое комьюнити.
- Автомасштабирование.
GitlabCI относительно новый инструмент, быстро завоевавший популярность в сообществе.
Своей известностью GitlabCI обязан в первую очередь нативностью с Gitlab, достаточной функциональностью и простотой в использовании.
GitlabCI полностью совместим с системой управления версиями Gitlab, изначально предполагая интеграцию Gitlab в процесс непрерывной сборки (CI).
Однако, возможна интеграция и с другими системами управления версиями.
GitlabCI обладает множеством полезных возможностей для улучшения процесса автоматизации сборки и доставки, интеграция которых в рабочий процесс не составит труда:
- Отслеживание проектов и групп.
- Тонкая настройка пайплайнов.
- Мониторинг состояния задач в этапах CI/CD.
- Анализ результатов выполнения этапов.
GitlabCI обладает встроенным механизмом по автоматическому масштабированию сред исполнения рабочих задач (Runners).
Выполнение задач по сборке может осуществляться на Runners под управлением ВМ на разных ОС, Docker, Kubernetes.
Часть 4. Знакомство с Jenkins
Jenkins — Open-source инструмент CI/CD, предназначенный для автоматизации множества задач в цифровых проектах и являющийся сборочным конвейером.
Достоинства и преимущества Jenkins:
- Простота в установке, настройке и эксплуатации.
- Расширяемость за счет использования Jenkins плагинов.
- Развитое сообщество и богатая документация.
Jenkins легко устанавливать, настраивать и обновлять благодаря простым процедурам установки без лишних деталей и специфичных особенностей.
Jenkins обладает обширной и понятной документацией.
В Jenkins создана целая экосистема различных плагинов, расширяющая или модифицирующая существующий функционал, в том числе графический интерфейс.
Плагинов насчитывается более 1500, практически все из них бесплатны и очень просты в установке.
Jenkins обладает самым развитым сообществом по сравнению с другими сборочными конвейерами CI/CD.
К комьюнити относятся не только команда разработки самого инструмента, но и разработчики множества плагинов.
Часть 5. GitlabCI vs Jenkins
Сходства GitlabCI и Jenkins:
- Открытый исходный код.
- Кроссплатформенность.
- Простота в установке и настройке.
- Гибкая работа с пайплайнами.
- Поддержка API.
- Интегрируемость с другими системами в рамках рабочих процессов.
- Обширное неравнодушное комьюнити.
Возможности
Уникальные возможности GitlabCI:
- Нативность Gitlab.
- Не требуется отдельная установка.
- Собственный мониторинг производительности.
- Встроенные решения по проверке качества кода.
Уникальные возможности Jenkins:
- Развитая экосистема плагинов.
- Расширенные возможности по интеграции со множеством систем за счет использования плагинов.
- Возможность использования языка Groovy для описания пайплайнов.
- Более обширное комьюнити, лучше документация.
Недостатки
Недостатки GitlabCI:
- Специфичная работа с артефактами.
- Возможные трудности при описании и работе со сложными пайплайнами.
- Местами чувствуется недостаточность языков описания пайплайнов.
Недостатки Jenkins:
- Нагромождение плагинов может вызывать сложности в их поддержке и обновлении.
- Для небольших проектов и небольших команд работа может оказаться сложнее, чем с GitlabCI.
GitlabCI и Jenkins замечательные инструменты, обладающие впечатляющими возможностями.
Если вы используете Gitlab в своей работе, логичнее использовать GitlabCI для процессов CI/CD.
Если вы не привязаны к Gitlab и вас впечатляет экосистема плагинов, выбирайте Jenkins.
Оба инструмента прекрасно справляются со своими задачами.