diff --git a/.trash/Pasted image 20260610224414.png b/.trash/Pasted image 20260610224414.png new file mode 100644 index 0000000..fae59a4 Binary files /dev/null and b/.trash/Pasted image 20260610224414.png differ diff --git a/.trash/Pasted image 20260610224417.png b/.trash/Pasted image 20260610224417.png new file mode 100644 index 0000000..fae59a4 Binary files /dev/null and b/.trash/Pasted image 20260610224417.png differ diff --git a/.trash/Pasted image 20260610224420.png b/.trash/Pasted image 20260610224420.png new file mode 100644 index 0000000..fae59a4 Binary files /dev/null and b/.trash/Pasted image 20260610224420.png differ diff --git a/.trash/Pasted image 20260610224422.png b/.trash/Pasted image 20260610224422.png new file mode 100644 index 0000000..fae59a4 Binary files /dev/null and b/.trash/Pasted image 20260610224422.png differ diff --git a/00 Inbox/CIСD Конвейер для сборки и доставки продукта. Знакомство с GitlabCI и Jenkins.md b/00 Inbox/CIСD Конвейер для сборки и доставки продукта. Знакомство с GitlabCI и Jenkins.md index 1e891c7..3cd5836 100644 --- a/00 Inbox/CIСD Конвейер для сборки и доставки продукта. Знакомство с GitlabCI и Jenkins.md +++ b/00 Inbox/CIСD Конвейер для сборки и доставки продукта. Знакомство с GitlabCI и Jenkins.md @@ -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. + +Оба инструмента прекрасно справляются со своими задачами.