Error in user YAML: (<unknown>): found character that cannot start any token while scanning for the next token at line 2 column 1
---
# ⚙️ DevOps-CI-CD-Pipeline – README.md
```markdown
# DevOps CI/CD Pipeline
## Overview
A **CI/CD pipeline project** automating build, test, and deployment with Docker and GitHub Actions (YAML).
---
- Situation: Manual deployments increased errors and slowed delivery.
- Task: Automate workflows for consistency and reliability.
- Action:
- Built Docker containers for reproducible environments.
- Configured GitHub Actions workflows (YAML) for build, test, deploy.
- Documented pipeline with architecture diagrams and inline comments.
- Result: Faster, reliable deployments with reusable CI/CD template.
- Docker
- GitHub Actions (YAML)
- Ubuntu/Linux
- Clone repo.
- Build container:
docker build -t cicd-app . - Push changes → GitHub Actions runs automatically.
This project demonstrates a complete CI/CD pipeline for deploying a Node.js + Express web application using Docker, GitHub Actions, and AWS EC2.
It highlights the essential skills of a Junior DevOps & Technical Content Engineer:
- Working in Linux/Unix environments
- Understanding of the Software Development Lifecycle (SDLC)
- Use of version control (Git + GitHub)
- Containerization with Docker
- Cloud deployment (AWS EC2)
- Automation with GitHub Actions
- Technical documentation and scripting
- Backend: Node.js + Express
- Containerization: Docker
- CI/CD: GitHub Actions
- Cloud Hosting: AWS EC2 (Ubuntu instance)
- Push code to GitHub (main branch)
- GitHub Actions builds and pushes Docker image to Docker Hub
- GitHub Actions SSHes into AWS EC2
- Docker image is pulled and run on EC2 as a live web app
devops-cicd-pipeline/
├── app/ # Node.js application
│ ├── index.js # Express server
│ └── package.json # App metadata and dependencies
├── Dockerfile # Container instructions
├── .github/workflows/ # GitHub Actions CI/CD workflow
│ └── deploy.yml
├── scripts/
│ └── deploy.sh # Manual EC2 deployment script
├── docs/
│ └── architecture.md # CI/CD diagrams and flow
└── README.md # This file
- Git + GitHub account
- Docker installed locally
- Docker Hub account
- AWS EC2 instance (Ubuntu 20.04)
- SSH access to EC2 (private key in GitHub secret)
- Node.js 18+ (for local testing)
- Create an EC2 instance (Ubuntu) on AWS Console
- Allow inbound HTTP (port 80) in EC2 Security Group
- SSH into instance and install Docker:
sudo apt update
sudo apt install docker.io -y
sudo usermod -aG docker ubuntu- Upload your
.pemSSH key and configure GitHub Actions secrets:EC2_HOSTEC2_USER(e.g.ubuntu)EC2_KEY(your private SSH key content)DOCKER_USERNAMEandDOCKER_PASSWORD
The file .github/workflows/deploy.yml defines all steps:
- Check out code
- Login to Docker Hub
- Build & push Docker image
- SSH into EC2
- Pull and run the latest Docker container
cd app
npm install
node index.jsVisit http://localhost:3000
Use the scripts/deploy.sh to SSH and deploy manually (update IP and image):
bash scripts/deploy.shSee /docs/architecture.md for:
- CI/CD architecture
- Component diagram
- Flow diagram
This project was built to demonstrate practical DevOps skills with professional documentation and automation. It is intended as a technical portfolio project for Junior DevOps & Technical Content Engineering roles.