# Staging Pipeline Configuration # Production-like environment for testing name: "Staging Pipeline" environment: staging # Global settings stop_on_failure: true enable_rollback: true # Global parameters parameters: docker_compose_file: "docker-compose.staging.yml" log_level: "info" notify_on_failure: true notification_webhook: "${STAGING_WEBHOOK_URL}" # Pipeline stages stages: # Build stage - stage: build enabled: true timeout: 600 retries: 1 parameters: composer_flags: "--no-dev --optimize-autoloader --classmap-authoritative" npm_flags: "--production" optimize: true # Test stage - comprehensive testing - stage: test enabled: true timeout: 600 # 10 minutes for full suite retries: 0 parameters: test_suite: "all" coverage: true coverage_threshold: 80 # Security check - enabled for staging - stage: security_check enabled: true timeout: 120 # 2 minutes retries: 0 parameters: check_composer: true check_npm: true fail_on_high: true fail_on_critical: true # Backup - create before deployment - stage: backup enabled: true timeout: 300 retries: 1 parameters: backup_type: "full" retention_days: 7 compress: true # Deploy stage - stage: deploy enabled: true timeout: 600 retries: 0 parameters: restart_policy: "unless-stopped" pull_images: true build_images: false health_check_delay: 10 # Health check - thorough validation - stage: health_check enabled: true timeout: 120 # 2 minutes retries: 3 parameters: check_interval: 10 required_services: - php - nginx - redis - mysql http_checks: - url: "https://staging.example.com/health" expected_status: 200 timeout: 30 # Cleanup - stage: cleanup enabled: true timeout: 180 # 3 minutes continue_on_failure: true parameters: clean_cache: true clean_logs: true clean_temp: true log_retention_days: 30