Files
smartsoltech_site/docker-compose.test.yml
Andrey K. Choi 5f48208aab
Some checks reported errors
continuous-integration/drone/push Build encountered an error
🐳 Implement Docker-based testing with full CI/CD pipeline
 Features:
- Docker Compose testing environment (docker-compose.test.yml)
- Specialized test Dockerfile (Dockerfile.test)
- Test-specific Django settings (settings_test.py)
- Complete Drone CI/CD pipeline with 8 stages
- PostgreSQL 17 container for isolated testing
- Network isolation for testing containers

🧪 Testing improvements:
- All 6 tests passing successfully
- Fixed ServiceRequest model tests
- Added proper Category and Service imports
- Container-based testing as requested

🚀 CI/CD enhancements:
- Code quality checks (flake8, black, bandit)
- Database migration testing
- Unit and integration tests
- Docker image building and security scanning
- Telegram notifications for build status
- Production deployment pipeline
- Scheduled maintenance tasks

🔧 Dependencies:
- Added dj-database-url for DATABASE_URL parsing
- Added testing dependencies (pytest, coverage)
- Updated requirements.txt with all needed packages

🎯 Result: Complete Docker network isolated testing system ready for production CI/CD
2025-11-25 07:26:40 +09:00

55 lines
1.6 KiB
YAML

version: '3.8'
services:
# Тестовая база данных
postgres_test:
image: postgres:17-alpine
container_name: postgres_test
environment:
POSTGRES_DB: smartsoltech_test
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_HOST_AUTH_METHOD: trust
ports:
- "5433:5432"
networks:
- test_network
volumes:
- test_pgdata:/var/lib/postgresql/data
# Тестовое Django приложение
django_test:
build:
context: .
dockerfile: Dockerfile.test
container_name: django_test
environment:
DATABASE_URL: postgresql://postgres:postgres@postgres_test:5432/smartsoltech_test
SECRET_KEY: test-secret-key-for-ci-very-long-and-secure-key-12345
DEBUG: "False"
ALLOWED_HOSTS: localhost,127.0.0.1,postgres_test,*
DJANGO_SETTINGS_MODULE: smartsoltech.settings_test
TELEGRAM_BOT_TOKEN: test-token-for-ci
depends_on:
- postgres_test
networks:
- test_network
command: >
sh -c "
echo 'Ожидание готовности PostgreSQL...' &&
until pg_isready -h postgres_test -p 5432 -U postgres; do
echo 'Waiting for postgres_test...' && sleep 2;
done &&
echo 'Запуск миграций...' &&
cd smartsoltech &&
python manage.py migrate --settings=smartsoltech.settings_test &&
echo 'Запуск тестов...' &&
python manage.py test --settings=smartsoltech.settings_test --verbosity=2
"
volumes:
test_pgdata:
networks:
test_network:
driver: bridge