- Add Gitea Actions workflow with 4 stages: lint, test, build, push - Configure ruff linting and formatting checks - Set up Django tests with PostgreSQL and Redis services - Implement Docker image building for web and celery services - Add requirements.txt and requirements-dev.txt generation - Fix ipdb compatibility issues in test runner - Update ruff configuration for Django compatibility - Add comprehensive CI/CD documentation
4.3 KiB
4.3 KiB
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. Локальная проверка
Перед коммитом запускайте:
# Линтинг
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. Ошибки линтинга
# Локальное исправление
uv run ruff check . --fix
uv run ruff format .
2. Проблемы с тестами
- Проверьте запущены ли PostgreSQL и Redis
- Убедитесь в корректности переменных окружения
- Проверьте наличие миграций
3. Ошибки сборки Docker
# Локальная проверка
docker build -f docker/Dockerfile.web -t test-web .
docker build -f docker/Dockerfile.celery -t test-celery .
Поддержка
Документация по настройке находится в docs/ci-cd-setup.md