diff --git a/90 Library/DevOps/CI-CD — основы.md b/90 Library/DevOps/CI-CD — основы.md new file mode 100644 index 0000000..2b24e2b --- /dev/null +++ b/90 Library/DevOps/CI-CD — основы.md @@ -0,0 +1,154 @@ +--- +title: CI/CD — основы +status: seed +type: concept +tags: + - devops + - cicd + - gitlab-ci + - jenkins +created: 2026-06-12 +updated: 2026-06-12 +aliases: + - Основы CI/CD + - Непрерывная интеграция и доставка +source: "CIСD Конвейер для сборки и доставки продукта. Знакомство с GitlabCI и Jenkins" +--- + +# CI/CD — основы + +**CI/CD** — набор практик автоматизации интеграции, проверки, сборки и доставки изменений программного продукта. Он сокращает цикл обратной связи и делает выпуск изменений повторяемым. + +CI/CD связывает управление кодом через [[Git]], командную работу в платформах вроде [[Gitlab]] и развёртывание продукта в целевой инфраструктуре. Это одна из базовых практик [[DevOps - основы]]. + +## Состав CI/CD + +### Continuous Integration + +**Continuous Integration (CI)** — частое объединение небольших изменений в общую кодовую базу с автоматической проверкой каждого изменения. + +Типичный CI-процесс: + +1. Разработчик отправляет изменения в репозиторий. +2. Система запускает статический анализ и автоматические тесты. +3. Приложение собирается или компилируется. +4. Результат упаковывается в версионированный артефакт. +5. Артефакт сохраняется в реестре или хранилище. + +Unit-тесты запускают отдельные единицы кода в контролируемом окружении. Кроме них в CI могут входить линтеры, SAST, SCA, интеграционные тесты и проверки качества. + +### Continuous Delivery + +**Continuous Delivery** — поддержание проверенного артефакта в состоянии готовности к выпуску. Доставка до production обычно требует явного решения или ручного подтверждения. + +### Continuous Deployment + +**Continuous Deployment** — автоматическое развёртывание каждого изменения, прошедшего все проверки, в production без ручного подтверждения. + +Delivery и deployment часто обозначают одной аббревиатурой CD, но уровень автоматизации выпуска у них различается. + +## Пайплайн + +**Pipeline** — описанная последовательность стадий и задач CI/CD. Обычно новый запуск инициируется коммитом, merge request, тегом, расписанием или ручным действием. + +Распространённые стадии: + +1. получение исходного кода; +2. линтинг и статический анализ; +3. модульное и интеграционное тестирование; +4. сборка приложения; +5. упаковка артефакта, например контейнерного образа на основе [[Основы - Docker]]; +6. публикация артефакта; +7. развёртывание; +8. дополнительные проверки; +9. сбор метрик и обратной связи. + +Отдельная задача внутри pipeline обычно называется **job**. Jobs объединяются в stages и выполняются на выделенных исполнителях. + +## Артефакт + +**Артефакт** — неизменяемый результат сборки, который можно проверить, хранить и продвигать между средами. Это может быть бинарный файл, пакет, архив или контейнерный образ. + +Один и тот же проверенный артефакт желательно последовательно использовать во всех средах. Повторная сборка перед production создаёт риск получить результат, отличный от протестированного. + +## Среды + +Продукт проходит через несколько изолированных сред: + +- **Dev** — разработка и ранняя интеграция; +- **Test / QA / Integration** — функциональные и интеграционные проверки; +- **Stage / Pre-production / UAT** — проверка в окружении, близком к production; +- **Prod** — эксплуатация продукта пользователями. + +Развёртывание может выполняться на виртуальных машинах, в контейнерах или в оркестраторе, например [[Kubernetes - MOC]]. + +## Обратная связь + +Pipeline не заканчивается фактом развёртывания. После выпуска необходимо собирать: + +- метрики приложения и инфраструктуры; +- логи; +- трассировки; +- сведения об ошибках; +- продуктовые и пользовательские метрики. + +Эти данные возвращаются в цикл разработки и помогают оценить качество релиза. Наблюдаемость pipeline также показывает длительность задач, частоту сбоев и узкие места доставки. + +## GitLab CI/CD + +**GitLab CI/CD** — встроенная в [[Gitlab]] система автоматизации pipeline. Конфигурация обычно хранится рядом с кодом в файле `.gitlab-ci.yml`. + +Jobs выполняются компонентами **GitLab Runner**. Runner может работать на физическом сервере, виртуальной машине, в Docker или Kubernetes. + +Преимущества: + +- тесная интеграция с репозиториями, merge request и правами GitLab; +- pipeline as code; +- управление jobs, stages, артефактами и окружениями в одном интерфейсе; +- просмотр состояния и результатов задач; +- возможность масштабирования runners. + +Ограничения: + +- наиболее удобен внутри экосистемы GitLab; +- сложные pipeline требуют аккуратной организации YAML-конфигурации; +- поведение артефактов, cache и зависимостей между jobs необходимо явно проектировать. + +## Jenkins + +**Jenkins** — самостоятельный open-source сервер автоматизации. Pipeline можно описывать декларативно или программно в `Jenkinsfile` с использованием Groovy. + +Преимущества: + +- большая экосистема плагинов; +- интеграция со множеством систем контроля версий, сборки и развёртывания; +- гибкость при построении нестандартных процессов; +- развитое сообщество и документация. + +Ограничения: + +- сервер и агенты необходимо отдельно устанавливать, обновлять и защищать; +- плагины увеличивают поверхность атаки и стоимость сопровождения; +- конфликты версий и накопление плагинов усложняют обновления; +- для небольших команд эксплуатация может быть тяжелее встроенного решения. + +## GitLab CI/CD и Jenkins + +| Критерий | GitLab CI/CD | Jenkins | +|---|---|---| +| Модель | Встроен в GitLab | Самостоятельный сервер | +| Описание pipeline | YAML | Jenkinsfile, Groovy | +| Исполнители | GitLab Runner | Jenkins agents | +| Интеграции | Нативные возможности GitLab | Обширная система плагинов | +| Сопровождение | Зависит от способа размещения GitLab и runners | Требует сопровождения controller, agents и плагинов | +| Основной сценарий | Проекты, уже использующие GitLab | Гетерогенная инфраструктура и нестандартные интеграции | + +Если код и процессы команды находятся в GitLab, GitLab CI/CD обычно требует меньше интеграционной работы. Jenkins оправдан, когда важны независимость от одной платформы, существующая Jenkins-инфраструктура или специфические интеграции. + +## Связанные заметки + +- [[DevOps - основы]] +- [[Git]] +- [[Gitlab]] +- [[Основы - Docker]] +- [[Kubernetes - MOC]] diff --git a/00 Inbox/CIСD Конвейер для сборки и доставки продукта. Знакомство с GitlabCI и Jenkins.md b/99 System/Archive/CIСD Конвейер для сборки и доставки продукта. Знакомство с GitlabCI и Jenkins.md similarity index 100% rename from 00 Inbox/CIСD Конвейер для сборки и доставки продукта. Знакомство с GitlabCI и Jenkins.md rename to 99 System/Archive/CIСD Конвейер для сборки и доставки продукта. Знакомство с GitlabCI и Jenkins.md diff --git a/99 System/INDEX.md b/99 System/INDEX.md index a3e5585..4b07127 100644 --- a/99 System/INDEX.md +++ b/99 System/INDEX.md @@ -1,6 +1,6 @@ --- -generated: 2026-06-05 -total: 505 +generated: 2026-06-12 +total: 510 --- # Vault Index @@ -9,7 +9,7 @@ total: 505 | Параметр | Значение | |----------|----------| -| Всего заметок | 505 | +| Всего заметок | 510 | ## . @@ -20,12 +20,6 @@ total: 505 | [[CODEX]] | CODEX | — | — | [] | | [[GEMINI]] | GEMINI | — | — | [] | -## 00 Inbox - -| Заметка | Aliases | Status | Type | Tags | -|---------|---------|--------|------|------| -| [[Вопросы по Вебу]] | — | processing | concept | [] | - ## 01 Ideas | Заметка | Aliases | Status | Type | Tags | @@ -45,6 +39,7 @@ total: 505 |---------|---------|--------|------|------| | [[Анализ рынка систем учета посещаемости]] | Анализ рынка систем учета посещаемости | seed | concept | [] | | [[НИР]] | НИР | seed | concept | [] | +| [[УИР_Сводный_вариант]] | — | stable | document | [уир, мифи, разработка] | ## 02 Projects/Наука/Статьи @@ -210,6 +205,7 @@ total: 505 | Заметка | Aliases | Status | Type | Tags | |---------|---------|--------|------|------| +| [[CI-CD — основы]] | Основы CI/CD, Непрерывная интеграция и доставка | seed | concept | [devops, cicd, gitlab-ci, jenkins] | | [[DevOps - основы]] | DevOps - основы | stable | concept | [devops] | | [[Git]] | Git | seed | concept | [devops, git, vcs] | | [[Gitlab]] | Gitlab | seed | concept | [devops, git, cicd, gitlab] | @@ -249,8 +245,8 @@ total: 505 | [[Индексное инвестирование]] | Индексное инвестирование | seed | guide | [finance, investments, index, funds] | | [[Инсайдерская торговля и манипулирование рынком]] | Инсайдерская торговля и манипулирование рынком | seed | concept | [finance, investments, market-abuse] | | [[Криптовалюты как инвестиционный актив]] | Криптовалюты как инвестиционный актив | seed | concept | [finance, investments, crypto] | -| [[Облигации]] | Облигации | seed | guide | [finance, investments, bonds] | | [[Облигации с залоговым обеспечением]] | Облигации с залоговым обеспечением денежных требований | seed | concept | [finance, investments, bonds, abs] | +| [[Облигации]] | Облигации | seed | guide | [finance, investments, bonds] | | [[Оценка акций]] | Оценка акций | seed | guide | [finance, investments, stocks, valuation] | | [[Риск-профиль инвестора]] | Риск-профиль инвестора | seed | concept | [finance, investments, risk] | | [[Трейдинг]] | Трейдинг | seed | guide | [finance, trading, risk] | @@ -408,7 +404,7 @@ total: 505 | Заметка | Aliases | Status | Type | Tags | |---------|---------|--------|------|------| | [[Дискриминантный анализ - MOC]] | Дискриминантный анализ - MOC | stable | moc | [math, statistics, discriminant-analysis] | -| [[Параметрический дискриминантный анализ в случае нормального закона распределения классов]] | Параметрический Дискриминантный Анализ В Случае Нормального Закона Распределения | seed | concept | [math, statistics, discriminant-analysis, ml-algorithms] | +| [[Параметрический дискриминантный анализ в случае нормального закона распределения классов]] | Параметрический Дискриминантный Анализ В Случае Нормального Закона Распределения Классов | seed | concept | [math, statistics, discriminant-analysis, ml-algorithms] | | [[Построение оптимальной процедуры классификации]] | Построение Оптимальной Процедуры Классификации | seed | concept | [math, mephi, statistics, discriminant-analysis] | | [[Принципы дискриминантного анализа]] | Принципы Дискриминантного Анализа | seed | concept | [math, mephi, statistics, discriminant-analysis] | | [[Условие отнесения объекта к классу в случае двух признаков]] | Условие Отнесения Объекта К Классу В Случае Двух Признаков | stable | concept | [math, ml, mephi, statistics, discriminant-analysis] | @@ -451,8 +447,8 @@ total: 505 | [[ФА - вращение]] | ФА - Вращение | seed | concept | [math, statistics, factor-analysis] | | [[ФА - модель, цель, сущность]] | ФА - Модель, Цель, Сущность | stable | concept | [math, ml, mephi, statistics, factor-analysis] | | [[Факторное отображение. Факторная структура]] | Факторное Отображение. Факторная Структура | stable | concept | [math, mephi, statistics, factor-analysis] | +| [[Факторный анализ. Цели и сущность. Постановка задачи. Отличие от анализа главных компонент]] | Факторный Анализ. Цели И Сущность. Постановка Задачи. Отличие От Анализа Главных Компонент | seed | concept | [math, mephi, statistics, factor-analysis] | | [[Факторный анализ]] | Факторный Анализ | stable | concept | [math, ml, mephi, statistics, factor-analysis] | -| [[Факторный анализ. Цели и сущность. Постановка задачи. Отличие от анализа главных компонент]] | Факторный Анализ. Цели И Сущность. Постановка Задачи. Отличие От Анализа Главных | seed | concept | [math, mephi, statistics, factor-analysis] | | [[Фундаментальная теорема факторного анализа]] | Фундаментальная Теорема Факторного Анализа | stable | concept | [math, mephi, statistics, factor-analysis] | | [[Этапы ФА. Выделение факторов]] | Этапы ФА. Выделение Факторов | seed | concept | [math, mephi, statistics, factor-analysis] | @@ -535,8 +531,8 @@ total: 505 | Заметка | Aliases | Status | Type | Tags | |---------|---------|--------|------|------| -| [[DHCP]] | DHCP | stable | concept | [network, networking, protocols, dhcp] | | [[DHCP-snooping]] | DHCP-snooping | seed | concept | [network, networking, protocols, dhcp] | +| [[DHCP]] | DHCP | stable | concept | [network, networking, protocols, dhcp] | | [[Dynamic ARP Inspection]] | Dynamic ARP Inspection | seed | concept | [network, networking, protocols, dhcp, arp] | | [[Механизм работы - DHCP]] | Механизм Работы - DHCP | stable | concept | [network, networking, protocols, dhcp] | | [[Настройка DHCP - Cisco]] | Настройка DHCP - Cisco | stable | concept | [network, networking, protocols, dhcp] | @@ -612,8 +608,10 @@ total: 505 | Заметка | Aliases | Status | Type | Tags | |---------|---------|--------|------|------| -| [[31, 32 - Налоги]] | 31, 32 - Налоги | seed | knowledge | [study, taxes] | | [[31, 32 - Налоги 1]] | 31, 32 - Налоги | seed | knowledge | [study, taxes] | +| [[31, 32 - Налоги]] | 31, 32 - Налоги | seed | knowledge | [study, taxes] | +| [[CIСD Конвейер для сборки и доставки продукта. Знакомство с GitlabCI и Jenkins]] | — | seed | concept | [] | +| [[gemini-code-1780921978295]] | — | — | — | [] | | [[Git]] | Git | seed | concept | [] | | [[Gitlab]] | Gitlab | seed | concept | [] | | [[HW Eng17.03]] | HW Eng17.03 | seed | concept | [homework] | @@ -633,11 +631,12 @@ total: 505 | [[В случае ошибок на принтере Kyocera FS-1020MFP]] | В случае ошибок на принтере Kyocera FS-1020MFP | seed | concept | [] | | [[Введение в сетевую безопасность]] | Введение в сетевую безопасность | processing | concept | [] | | [[ВДО no кредитам]] | — | seed | concept | [] | +| [[Вопросы по Вебу]] | — | processing | concept | [] | | [[Знания Ruby]] | Знания Ruby | seed | concept | [] | | [[Идеи для статьи]] | Идеи Для Статьи | — | — | [] | -| [[Идея]] | — | seed | concept | [] | | [[Идея сети кохонена]] | Идея сети кохонена | seed | concept | [] | | [[Идея — упаковка для еды]] | — | seed | concept | [] | +| [[Идея]] | — | seed | concept | [] | | [[Инструкция по деплою finreport-analyzer]] | — | seed | concept | [] | | [[Итераторы для обработки массивов Ruby]] | Итераторы для обработки массивов Ruby | seed | concept | [] | | [[Команды для деплоя с помощью Capistrano]] | — | seed | concept | [] | @@ -651,6 +650,7 @@ total: 505 | [[Налоги - СР2]] | Налоги - СР2 | seed | knowledge | [study, taxes] | | [[Нейронная сеть Кохонена]] | Нейронная сеть Кохонена | seed | concept | [] | | [[Нейронная сеть хемминга]] | Нейронная сеть хемминга | seed | concept | [] | +| [[Обзор аналогов и обоснование инструментария системы учёта посещаемости студентов НИЯУ МИФИ]] | — | — | — | [] | | [[Обратное распространение ошибки - вывод]] | Обратное распространение ошибки - вывод | seed | concept | [] | | [[Основные команды git]] | Основные команды git | processing | concept | [] | | [[Подготовка Speaking]] | Подготовка Speaking | seed | concept | [] |