# ============================================================================= # LOCAL CI TESTING SERVICES # ============================================================================= # Docker Compose profile for running CI tests locally. # Uses different ports to avoid conflicts with development services. # # Usage: # docker compose -f devops/compose/docker-compose.ci.yaml up -d # docker compose -f devops/compose/docker-compose.ci.yaml down -v # # Services: # - postgres-ci: PostgreSQL 16 for integration tests (port 5433) # - valkey-ci: Valkey/Redis for caching tests (port 6380) # - nats-ci: NATS JetStream for messaging tests (port 4223) # - mock-registry: Local container registry for release testing (port 5001) # # ============================================================================= networks: ci-net: driver: bridge name: stellaops-ci-net volumes: ci-postgres-data: name: stellaops-ci-postgres ci-valkey-data: name: stellaops-ci-valkey services: # --------------------------------------------------------------------------- # PostgreSQL 16 - Primary database for integration tests # --------------------------------------------------------------------------- postgres-ci: image: postgres:16-alpine container_name: stellaops-postgres-ci environment: POSTGRES_USER: stellaops_ci POSTGRES_PASSWORD: ci_test_password POSTGRES_DB: stellaops_test # Performance tuning for tests POSTGRES_INITDB_ARGS: "--data-checksums" ports: - "5433:5432" # Different port to avoid conflicts with dev volumes: - ci-postgres-data:/var/lib/postgresql/data networks: - ci-net healthcheck: test: ["CMD-SHELL", "pg_isready -U stellaops_ci -d stellaops_test"] interval: 5s timeout: 5s retries: 10 start_period: 10s restart: unless-stopped # --------------------------------------------------------------------------- # Valkey 8.0 - Redis-compatible cache for caching tests # --------------------------------------------------------------------------- valkey-ci: image: valkey/valkey:8.0-alpine container_name: stellaops-valkey-ci command: ["valkey-server", "--appendonly", "yes", "--maxmemory", "256mb", "--maxmemory-policy", "allkeys-lru"] ports: - "6380:6379" # Different port to avoid conflicts volumes: - ci-valkey-data:/data networks: - ci-net healthcheck: test: ["CMD", "valkey-cli", "ping"] interval: 5s timeout: 5s retries: 5 restart: unless-stopped # --------------------------------------------------------------------------- # NATS JetStream - Message queue for messaging tests # --------------------------------------------------------------------------- nats-ci: image: nats:2.10-alpine container_name: stellaops-nats-ci command: ["-js", "-sd", "/data", "-m", "8222"] ports: - "4223:4222" # Client port (different from dev) - "8223:8222" # Monitoring port networks: - ci-net healthcheck: test: ["CMD", "wget", "-q", "--spider", "http://localhost:8222/healthz"] interval: 5s timeout: 5s retries: 5 restart: unless-stopped # --------------------------------------------------------------------------- # Mock Container Registry - For release dry-run testing # --------------------------------------------------------------------------- mock-registry: image: registry:2 container_name: stellaops-registry-ci ports: - "5001:5000" environment: REGISTRY_STORAGE_DELETE_ENABLED: "true" networks: - ci-net restart: unless-stopped # --------------------------------------------------------------------------- # Mock S3 (MinIO) - For artifact storage tests # --------------------------------------------------------------------------- minio-ci: image: minio/minio:latest container_name: stellaops-minio-ci command: server /data --console-address ":9001" ports: - "9100:9000" # S3 API port - "9101:9001" # Console port environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin networks: - ci-net healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped