ada-pc: 2026-06-10 22:47:42 | 5
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
This commit is contained in:
+190
@@ -8,3 +8,193 @@ aliases: []
|
||||
---
|
||||
|
||||
# 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.
|
||||
|
||||
Оба инструмента прекрасно справляются со своими задачами.
|
||||
|
||||
Reference in New Issue
Block a user