This repository demonstrates an end-to-end CI/CD implementation for a full-stack enterprise-style application consisting of:
- ⚙️ Backend: .NET (ASP.NET Core)
- 🎨 Frontend: React
- 🗄️ Database: MySQL
- 🔄 CI/CD: GitHub Actions & Azure DevOps
- ☁️ Target Platforms: Azure VM, AWS EC2, Docker containers
⚠️ Important:
The primary focus of this project is DevOps automation, CI/CD orchestration, and cloud readiness, not application feature development.
In real-world enterprise environments, applications are rarely single-stack. Most systems consist of:
- Separate frontend and backend teams
- Shared databases or managed services
- Multiple deployment environments
- Strict CI/CD and release controls
This project simulates such a setup and focuses on how DevOps pipelines handle multi-technology applications reliably and repeatably.
┌───────────────────┐ ┌────────────────────┐ │ React Frontend │ ---> │ .NET Backend API │ └───────────────────┘ └────────────────────┘ │ ▼ ┌──────────┐ │ MySQL │ └──────────┘
Each component is built, tested, and packaged independently while being orchestrated through a single CI/CD pipeline.
. ├── elearn-backend │ ├── Controllers │ ├── Models │ ├── Data │ ├── Dockerfile │ └── Program.cs │ ├── elearn-frontend │ ├── public │ ├── src │ └── package.json │ ├── .github/workflows │ ├── cicd_workflow.yml │ └── workflow_net.yml │ ├── azure-pipelines.yml └── README.md
The GitHub Actions workflow performs:
- ✅ Source code checkout
- ✅ Frontend dependency installation, build & tests
- ✅ Backend dependency restore, build & tests
- ✅ MySQL service container for integration testing
- ✅ Manual and automated triggers
- Uses MySQL as a service container to mimic real integration tests
- Builds frontend and backend independently
- Ensures failures are caught early before deployment
The Azure DevOps pipeline is designed for:
- Controlled deployments
- Environment-specific releases
- Artifact-based delivery
This mirrors how many enterprises separate:
- CI (GitHub) → CD (Azure DevOps)
- Backend includes a Dockerfile
- Application is container-ready for:
- Docker-based deployments
- Future Kubernetes adoption
- Enables cloud-agnostic deployments
This application is designed to be deployed on:
- 🔵 Azure Virtual Machines
- 🟠 AWS EC2 instances
- 🐳 Docker containers
The CI/CD pipeline ensures that the same build artifacts can be deployed across multiple platforms with minimal changes.
- No hardcoded credentials in pipelines
- Environment variables used for sensitive configuration
- Database access controlled via CI service containers
- Separation of CI and CD responsibilities
- Single repo, multi-component setup for easier pipeline orchestration
- Service containers used instead of mocks for realistic testing
- Pipeline-first approach, app kept intentionally simple
- Designed for extensibility (Kubernetes, cloud-native services)
Bhabya Bharti
DevOps Engineer | Cloud | CI/CD | Terraform | Containers