CloudDeploy is an end-to-end DevOps project demonstrating a production-style Continuous Integration and Continuous Deployment (CI/CD) pipeline on AWS.
The project automatically builds a Docker image whenever code is pushed to GitHub, stores the image in Amazon ECR, and deploys the latest version to an AWS EC2 instance using GitHub Actions.
This project demonstrates modern DevOps practices including containerization, automation, cloud deployment, and CI/CD.
Developer
β
βΌ
Git Push
β
βΌ
GitHub Repository
β
βΌ
GitHub Actions
β
βΌ
Docker Image Build
β
βΌ
Amazon Elastic Container Registry (ECR)
β
βΌ
SSH into EC2
β
βΌ
Pull Latest Docker Image
β
βΌ
Stop Previous Container
β
βΌ
Run Latest Container
β
βΌ
Application Live
- Automated CI/CD Pipeline
- Dockerized Flask Application
- GitHub Actions Workflow
- Amazon ECR Integration
- Automated EC2 Deployment
- Dynamic Deployment Dashboard
- Health Check Endpoint
- Responsive Professional UI
- Zero Manual Deployment
- Production-ready Gunicorn Server
devops-cicd-project/
β
βββ app/
β βββ app.py
β βββ requirements.txt
β βββ Dockerfile
β βββ .dockerignore
β βββ deployment.json
β βββ templates/
β β βββ index.html
β βββ static/
β βββ css/
β β βββ style.css
β βββ js/
β β βββ app.js
β βββ images/
β
βββ .github/
β βββ workflows/
β βββ deploy.yml
β
βββ scripts/
β βββ deploy.sh
β
βββ docker-compose.yml
βββ README.md
βββ LICENSE
- AWS EC2
- Amazon ECR
- IAM
- Docker
- GitHub Actions
- Git
- CI/CD
- Python
- Flask
- Gunicorn
- HTML5
- CSS3
- JavaScript
- Developer pushes code to GitHub.
- GitHub Actions workflow starts automatically.
- Repository is checked out.
- Docker image is built.
- Image is tagged.
- Image is pushed to Amazon ECR.
- GitHub Actions connects to the EC2 instance using SSH.
- EC2 logs in to Amazon ECR.
- Latest Docker image is pulled.
- Existing container is stopped.
- Old container is removed.
- New container is started.
- Updated application becomes available.
docker build -t clouddeploy:v1 .docker run -d \
--name clouddeploy \
-p 5000:5000 \
clouddeploy:v1docker stop clouddeploydocker rm clouddeploy- Amazon EC2
- Amazon ECR
- IAM
Configure the following repository secrets before running the workflow.
| Secret | Description |
|---|---|
| AWS_ACCESS_KEY_ID | IAM User Access Key |
| AWS_SECRET_ACCESS_KEY | IAM User Secret Key |
| AWS_ACCOUNT_ID | AWS Account ID |
| AWS_REGION | AWS Region |
| ECR_REPOSITORY | Amazon ECR Repository Name |
| EC2_HOST | EC2 Public IP or DNS |
| EC2_USERNAME | SSH Username |
| EC2_SSH_KEY | EC2 Private Key |
Clone the repository.
git clone <repository-url>Move into the application directory.
cd devops-cicd-project/appInstall dependencies.
pip install -r requirements.txtRun the application.
python app.pyOpen your browser.
http://localhost:5000
Start the application.
docker compose up --buildRun in background.
docker compose up -dStop the application.
docker compose downGET /
Displays the deployment dashboard.
GET /health
Returns application health status.
GET /api/deployment
Returns deployment metadata in JSON format.
- Kubernetes Deployment
- Amazon EKS
- Helm Charts
- Terraform Infrastructure
- Blue/Green Deployment
- Canary Deployment
- Monitoring with CloudWatch
- Prometheus
- Grafana
- SonarQube
- Trivy Security Scanning
- Slack Notifications
- Automatic Rollback
- Multi-stage Docker Builds
- Image Versioning using Git SHA
Add screenshots of:
- Application Dashboard
- GitHub Actions Workflow
- Amazon ECR Repository
- Running EC2 Instance
- Docker Containers
- Successful Deployment
Through this project you will learn:
- Git & GitHub
- Docker Fundamentals
- Docker Image Management
- GitHub Actions
- CI/CD Pipeline Design
- AWS EC2
- Amazon ECR
- IAM Configuration
- SSH Automation
- Deployment Automation
- Production Deployment Practices
Suyash Singh
DevOps Engineer | Cloud Enthusiast | AWS | Docker | Linux | CI/CD
GitHub: https://github.com/Suyashrsingh
LinkedIn: https://www.linkedin.com/in/suyash-rishi-singh-6bb18b289/
If you found this project useful:
- β Star the repository
- π΄ Fork the project
- π’ Share it with others
- π‘ Contribute with improvements
Happy Learning! π