greg 8322df0313 feat: add comprehensive CI/CD pipeline with auto-promotion and testing
🚀 Enhanced GitHub Actions workflows:
- Add Playwright testing to all deployment pipelines
- Implement auto-promotion from develop → staging → master
- Add visual regression testing with screenshot artifacts
- Create PR validation workflow with local testing
- Add performance testing and health checks
- Implement timestamped artifact uploads
- Add comprehensive test result reporting
- Include Kubernetes manifest validation

🧪 Testing improvements:
- Multi-browser testing (Chrome, Firefox, Safari)
- Mobile device testing (Pixel 5, iPhone 12)
- Environment-specific test validation
- Security header validation
- Health endpoint testing
- Performance benchmarking

🔄 Auto-promotion flow:
- develop → staging (automatic PR creation after tests pass)
- staging → master (automatic PR creation after tests pass)
- Manual review required for production deployment
- Full test validation at each stage
2025-06-30 20:53:20 -07:00

K8s Game 2048

A Kubernetes deployment of the classic 2048 game using Knative Serving with Kourier ingress controller.

Features

  • Knative Serving: Serverless deployment with scale-to-zero capability
  • Kourier Gateway: Lightweight ingress controller for Knative
  • Multi-environment: Development, Staging, and Production deployments
  • Custom Domains: Environment-specific domain configuration
  • GitOps Workflow: Complete CI/CD pipeline with GitHub Actions

Environments

  • Development: 2048-dev.wa.darknex.us
  • Staging: 2048-staging.wa.darknex.us
  • Production: 2048.wa.darknex.us

Architecture

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   Kourier       │    │   Knative       │    │   2048 Game     │
│   Gateway       │───▶│   Service       │───▶│   Container     │
│                 │    │                 │    │                 │
└─────────────────┘    └─────────────────┘    └─────────────────┘

Quick Start

Prerequisites

  • Kubernetes cluster (1.21+)
  • Knative Serving installed
  • Kourier as the networking layer
  • kubectl configured
  • Domain DNS configured to point to Kourier LoadBalancer

Installation

  1. Clone the repository:
git clone https://github.com/ghndrx/k8s-game-2048.git
cd k8s-game-2048
  1. Deploy to development:
kubectl apply -f manifests/dev/
  1. Deploy to staging:
kubectl apply -f manifests/staging/
  1. Deploy to production:
kubectl apply -f manifests/prod/

Project Structure

k8s-game-2048/
├── README.md
├── Dockerfile
├── .github/
│   └── workflows/
│       ├── deploy-dev.yml
│       ├── deploy-staging.yml
│       └── deploy-prod.yml
├── manifests/
│   ├── dev/
│   │   ├── namespace.yml
│   │   ├── service.yml
│   │   └── domain-mapping.yml
│   ├── staging/
│   │   ├── namespace.yml
│   │   ├── service.yml
│   │   └── domain-mapping.yml
│   └── prod/
│       ├── namespace.yml
│       ├── service.yml
│       └── domain-mapping.yml
├── scripts/
│   ├── setup-knative.sh
│   ├── setup-kourier.sh
│   └── deploy.sh
└── src/
    └── (2048 game files)

Deployment

The application uses Knative Serving with the following features:

  • Scale to Zero: Automatically scales down to 0 when not in use
  • Auto-scaling: Scales up based on incoming requests
  • Blue-Green Deployments: Safe deployment strategy with traffic splitting
  • Custom Domains: Environment-specific domain mapping

Monitoring

Each environment includes:

  • Knative Service status monitoring
  • Request metrics via Knative
  • Custom domain health checks

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Description
No description provided
Readme MIT 194 KiB
Languages
Shell 39.7%
Python 14.6%
JavaScript 14.4%
TypeScript 14%
CSS 12.6%
Other 4.7%