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

4.3 KiB
Raw Blame History

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