В пайплайне используются следующие стадии:
securitytestdeploy
Стадия security:
pylint— анализ кода Pythontrivy— поиск уязвимостей в Docker-образах и зависимостяхflake8— проверка стиля кода (PEP8)black— проверка форматирования кодаisort— проверка порядка импортовbandit— поиск проблем безопасности в кодеmypy— проверка типов
Стадия test:
test_backend— запуск тестов приложения
Стадия deploy:
deploy_backend— развёртывание приложения на сервер через SSH
В пайплайне используются следующие инструменты:
- Pylint
- Trivy
- Flake8
- Black
- isort
- Bandit
- mypy
Параметр allow_failure: true позволяет задаче завершиться с ошибкой без остановки всего пайплайна.
Это означает, что даже если в процессе анализа будут найдены ошибки, выполнение пайплайна продолжится.
Используется для задач анализа безопасности и качества кода, чтобы сначала получить отчёты, а затем исправить ошибки.
Артефакты сохраняются с помощью блока artifacts.
Основные параметры:
when: always— сохранять артефакты всегда, даже при ошибкеpaths— список файлов или директорий для сохраненияexpire_in— срок хранения (например,7 days)
pylint_report/— отчёт pylinttrivy/*.csv— отчёты trivyflake8_report/— отчёт flake8black_diff.txt— результат проверки blackisort_report.html— отчёт isortbandit_report.csv— отчёт banditmypy_report/— отчёт mypyreport.xml— отчёт тестов (JUnit)
- Django 3.1.12 — CVE-2025-64459, уровень CRITICAL, обнаружена SQL Injection, исправлено в версиях 4.2.24 / 5.1.12 / 5.2.6
- Django 3.1.12 — CVE-2025-57833, уровень HIGH, обнаружена SQL Injection in FilteredRelation, исправлено в 4.2.23 / 5.1.11 / 5.2.5
- gunicorn 20.1.0 — CVE-2024-1135, уровень HIGH, обнаружена уязвимость HTTP Request Smuggling, исправлено в 22.0.0
- PyJWT 2.1.0 — CVE-2026-32597, уровень HIGH, библиотека принимает неизвестные crit extensions в заголовке JWT, исправлено в 2.10.1
| Файл | Строка | Severity | Confidence | Описание |
|---|---|---|---|---|
backend/conftest.py |
33 | LOW | HIGH | Использование assert (B101), что не рекомендуется в production-коде |
backend/core/settings.py |
14 | LOW | MEDIUM | Возможное захардкоженное значение пароля (B105) |
backend/core/settings.py |
200 | LOW | MEDIUM | Возможное захардкоженное значение пароля (B105) |
