ada-pc: 2026-06-12 11:25:50 | 3
Affected files: 90 Library/DevOps/CI-CD — основы.md 99 System/Archive/CIСD Конвейер для сборки и доставки продукта. Знакомство с GitlabCI и Jenkins.md 99 System/INDEX.md
This commit is contained in:
@@ -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]]
|
||||
+15
-15
@@ -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 | [] |
|
||||
|
||||
Reference in New Issue
Block a user