🚀 CI/CD Pipelines with GitHub Actions Masterclass
1️⃣ What is CI/CD & The DevOps Pipeline
Definition: CI/CD software engineering ka ek modern automation practice hai jo developers ke local code commits se lekar production deployment tak ke steps (linting, testing, building, staging, deploying) ko human intervention ke bina automate karta hai.
| Pillar | Full Form | Core Responsibility | Trigger Point |
|---|---|---|---|
| CI | Continuous Integration | Developers ke code changes ko shared repository me merge karke automated unit tests aur lint checks run karna. | Git Commit / Pull Request open hone par |
| CD | Continuous Delivery | Production-ready build artifact (Docker image/ZIP) create karna jo manual single-click approval par release hota hai. | Main branch me PR merge hone par |
| CD | Continuous Deployment | Bina kisi manual approval ke har verified commit automatically live production servers par deploy ho jana. | Tests pass hone par 100% automated |
2️⃣ GitHub Actions Core Structural Anatomy
GitHub repository me CI/CD pipeline chalane ke 5 core building blocks:
| Component | Description & Role |
|---|---|
Event (on:) |
Pipeline ko trigger karne wala event (e.g. push, pull_request, schedule). |
| Workflow | Automated process jo .github/workflows/ directory me .yml file ke roop me store hoti hai. |
Job (jobs:) |
Steps ka set jo ek common virtual machine par execute hota hai (Default roop se multiple jobs parallel run hote hain). |
Step (steps:) |
Individual tasks jo shell command run karte hain ya pre-built action execute karte hain (uses:). |
| Runner | Virtual machine OS (Ubuntu, Windows, macOS) jo GitHub host karta hai ya self-hosted server hota hai. |
3️⃣ Writing a Production-Ready CI Workflow YAML
Ek standard Node.js/Python test pipeline ka structure:
name: Production CI Pipeline
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- name: Checkout Source Code
uses: actions/checkout@v4
- name: Setup Node.js Runtime
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- name: Install Project Dependencies
run: npm ci
- name: Execute Linter Checks
run: npm run lint
- name: Run Automated Unit Tests
run: npm test -- --coverage
4️⃣ Environment Variables & Encrypted Secrets
API keys, database passwords aur private SSH keys ko kabhi bhi code repository me commit nahi kiya jata:
# Accessing GitHub Encrypted Secrets in a Job
- name: Deploy to Cloud Provider
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
PROD_DB_URL: ${{ secrets.PROD_DATABASE_URL }}
run: |
echo "Deploying application securely with injected runtime credentials..."
*** se mask kar deta hai.
5️⃣ Multi-Version Matrix Builds & Test Automation
Ek sath multiple OS aur programming language versions par parallel tests run karna:
jobs:
test-compatibility:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
node-version: [18.x, 20.x, 22.x]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: npm test
6️⃣ Docker Containerization in CI/CD
Production releases ke liye Docker container image build karke GitHub Container Registry (GHCR) ya Docker Hub par publish karna:
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and Push Docker Image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: fresherjobsalert/web-app:${{ github.sha }}, fresherjobsalert/web-app:latest
7️⃣ Zero-Downtime Deployment & Rollbacks
| Deployment Strategy | How It Operates | Rollback Mechanism |
|---|---|---|
| Rolling Update | Purane instances ko ek-ek karke naye version ke container se replace karna. | Previous revision par scale up karke revert karna. |
| Blue/Green Deployment | Do identical environments chalana; router/load-balancer ko instant switch karna. | Instant router traffic cut-over back to old Green environment (Zero downtime). |
| Canary Release | Naya code shuru me sirf 5% live users par route karna, health verify hone par 100% rollout. | 5% traffic rule turant drop kar dena agar error logs spike karein. |