Перейти к основному содержимому

Как работает CI/CD

Два независимых пайплайна​

У проекта два репозитория (backend, frontend), у каждого свой пайплайн. Push в backend собирает и деплоит только backend, push в frontend — только frontend. Деплоятся в один namespace, релизы project-NN-backend и project-NN-frontend.

git push main (в backend ИЛИ frontend)
│
▼
┌─────────────┐
│ Тесты │ pytest (backend) / npm test (frontend)
│ SonarQube │ анализ кода (quality gate)
└──────┬──────┘
│ ✅ тесты прошли
▼
┌─────────────┐
│ werf │ сборка образа компонента (backend ИЛИ frontend)
│ build │ контент-хеш тег (не :latest)
└──────┬──────┘
│
▼
┌─────────────┐
│ Trivy │ сканирование уязвимостей
│ scan │ CRITICAL/HIGH → стоп
└──────┬──────┘
│ ✅ уязвимостей нет
▼
┌─────────────┐ только в backend-пайплайне, если включён блок migrate:
│ migrate │ python manage.py migrate (werf weight -5, до раскатки)
└──────┬──────┘
▼
┌─────────────┐
│ werf │ деплой компонента, rolling update без даунтайма
│ converge │ релиз project-NN-<component>
└──────┬──────┘
▼
🚀 https://project-NN.simple-env.site ( / → frontend, /api → backend )

Ветки​

СобытиеЧто происходит
push в mainПолный пайплайн — тесты, сборка, деплой компонента
Pull Request в mainТолько тесты + SonarQube (без деплоя)
push в другие веткиПайплайн не запускается

Где смотреть результаты​

Gitea → твой репозиторий → вкладка Actions → последний запуск.

Каждый шаг раскрывается и показывает логи. Если шаг упал — красный крестик.

Частые причины падения пайплайна​

СимптомПричинаРешение
Tests failedТесты упалиИсправь тесты
Quality Gate failedSonarQube нашёл проблемыИсправь код, посмотри SonarQube
Trivy: CRITICAL CVEУязвимость в зависимостиОбнови версию пакета
migrate Job failedОшибка в миграцииПроверь migrate.py, откати если нужно
ImagePullBackOffNexus недоступенОбратись к преподавателю
OOMKilledНе хватает памятиОптимизируй или попроси увеличить лимит