Files
mostovik-backend/CI_CD_SUMMARY.md
Aleksandr Meshchriakov 06b30fca02 feat: implement CI/CD pipeline with Gitea Actions
- 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
2026-01-19 14:24:48 +01:00

121 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`