- 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
121 lines
4.3 KiB
Markdown
121 lines
4.3 KiB
Markdown
# 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`
|