131 lines
4.3 KiB
YAML
131 lines
4.3 KiB
YAML
# =============================================================================
|
|
# 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
|