🐳 Implement Docker-based testing with full CI/CD pipeline
Some checks reported errors
continuous-integration/drone/push Build encountered an error
Some checks reported errors
continuous-integration/drone/push Build encountered an error
✨ 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
This commit is contained in:
55
docker-compose.test.yml
Normal file
55
docker-compose.test.yml
Normal file
@@ -0,0 +1,55 @@
|
||||
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
|
||||
Reference in New Issue
Block a user