# CI/CD Pipeline Summary ## Что было сделано ### 1. Реализован Gitea Actions Pipeline Создан файл конфигурации: `.gitea/workflows/ci-cd.yml` Этапы pipeline: - **lint** - проверка кода с помощью ruff - **test** - запуск тестов Django с PostgreSQL и Redis - **build** - сборка Docker образов (web и celery) - **push** - пуш образов в Gitea Container Registry ### 2. Настройка зависимостей - Созданы файлы `requirements.txt` и `requirements-dev.txt` из `pyproject.toml` - Удалены проблемные зависимости (ipdb, pdbpp) из-за конфликтов - Обновлена конфигурация ruff для игнорирования Django-специфичных ошибок ### 3. Исправления в коде - Обновлен `ruff.toml` для корректной работы с Django - Добавлен `TEST_RUNNER` в настройки Django - Исправлен кастомный test runner ### 4. Docker-образы - Проверена сборка обоих образов: - `mostovik-web` - основное приложение - `mostovik-celery` - worker и beat сервисы ## Как использовать ### 1. Настройка Gitea В настройках репозитория установите: **Secrets:** ``` GITEA_USERNAME = ваш_пользователь GITEA_TOKEN = ваш_токен_доступа ``` **Variables:** ``` GITEA_REGISTRY_URL = адрес_вашего_gitea_registry ``` ### 2. Локальная проверка Перед коммитом запускайте: ```bash # Линтинг uv run ruff check . uv run ruff format . --check # Тесты (если нужно) uv run python run_tests.py # Pre-commit pre-commit run --all-files ``` ### 3. Pipeline запускается автоматически - При пуше в ветки `main` и `develop` - При создании Pull Request'ов ## Особенности реализации ### Линтинг - Используется **ruff** как основной линтер - Проверяются все файлы проекта - Автоматическое форматирование отключено в CI (только проверка) ### Тестирование - Запускаются в изолированном окружении - Используются сервисы PostgreSQL и Redis - Для обхода проблем с ipdb используется специальный скрипт `run_tests.py` ### Сборка Docker - Используются существующие Dockerfile'ы - Кэширование слоев для ускорения сборки - Multi-stage сборка не используется (по требованиям проекта) ### Пуш образов - Только для веток `main` и `develop` - Теги: - `latest` для основной ветки - `{branch-name}` для feature-веток - `{commit-sha}` для каждого коммита ## Безопасность - Все токены хранятся в Secrets - Переменные окружения не попадают в логи - Используются минимальные права для сервисов ## Мониторинг Pipeline можно отслеживать в интерфейсе Gitea: `Repository → Actions` Каждый job имеет подробные логи для диагностики проблем. ## Возможные проблемы и решения ### 1. Ошибки линтинга ```bash # Локальное исправление uv run ruff check . --fix uv run ruff format . ``` ### 2. Проблемы с тестами - Проверьте запущены ли PostgreSQL и Redis - Убедитесь в корректности переменных окружения - Проверьте наличие миграций ### 3. Ошибки сборки Docker ```bash # Локальная проверка docker build -f docker/Dockerfile.web -t test-web . docker build -f docker/Dockerfile.celery -t test-celery . ``` ## Поддержка Документация по настройке находится в `docs/ci-cd-setup.md`