A Visual Guide to CI/CD

Listen to this Post

Continuous Integration (CI) is a foundational practice in DevOps where developers frequently merge code changes into the main branch, often multiple times a day. This process is complemented by automated testing to ensure new changes integrate seamlessly with existing code. The primary goal of CI is to find and address bugs quicker, improve software quality, and reduce the time required to validate and release updates.

Continuous Deployment (CD) automates deploying code changes to production without human intervention. It ensures every change passing all automated tests gets deployed. It accelerates customer feedback by releasing updates more frequently. CD also reduces pressure on developers by eliminating manual release processes.

Some companies rely on Continuous Delivery instead. Continuous Delivery extends CI by automatically preparing code changes for release to production. However, unlike Continuous Deployment, it requires manual approval prior to production deployment. This practice ensures that all changes are automatically built, tested, and ready for release. It allows teams to deploy new changes anytime at the push of a button.

You Should Know:

Essential CI/CD Commands & Tools

Git Commands for CI Workflow


<h1>Clone a repository</h1>

git clone <repo-url>

<h1>Create a new branch</h1>

git checkout -b feature-branch

<h1>Commit changes</h1>

git add . 
git commit -m "Implement new feature"

<h1>Push to remote</h1>

git push origin feature-branch

<h1>Merge changes (after CI passes)</h1>

git checkout main 
git merge feature-branch 

Jenkins CI Pipeline Example

pipeline { 
agent any 
stages { 
stage('Build') { 
steps { 
sh 'mvn clean package' 
} 
} 
stage('Test') { 
steps { 
sh 'mvn test' 
} 
} 
stage('Deploy') { 
steps { 
sh 'scp target/app.war user@prod-server:/deploy' 
} 
} 
} 
} 

GitHub Actions Workflow

name: CI/CD Pipeline 
on: [push] 
jobs: 
build: 
runs-on: ubuntu-latest 
steps: 
- uses: actions/checkout@v2 
- run: npm install 
- run: npm test 
- run: npm run deploy 

Docker & Kubernetes for CD


<h1>Build Docker image</h1>

docker build -t my-app:latest .

<h1>Push to Docker Hub</h1>

docker push my-app:latest

<h1>Deploy to Kubernetes</h1>

kubectl apply -f deployment.yaml 

Security Checks in CI/CD


<h1>Static code analysis with SonarQube</h1>

sonar-scanner -Dsonar.projectKey=my-project

<h1>Dependency vulnerability scan</h1>

npm audit 

Monitoring Deployments


<h1>Check Kubernetes deployment status</h1>

kubectl get deployments

<h1>View logs</h1>

kubectl logs <pod-name>

<h1>Rollback if needed</h1>

kubectl rollout undo deployment/my-app 

What Undercode Say

CI/CD pipelines are the backbone of modern DevOps, ensuring rapid, reliable software delivery. Key takeaways:
– Automate everything: From testing to deployment.
– Security first: Integrate SAST/DAST tools early.
– Monitor deployments: Use tools like Prometheus & Grafana.
– Rollback plans: Always have a recovery strategy.

Linux/Windows Commands for CI/CD


<h1>Linux: Check disk space (critical for build servers)</h1>

df -h

<h1>Windows: Verify service status</h1>

sc query "Jenkins"

<h1>Linux: Kill a stuck process</h1>

pkill -f "mvn"

<h1>Windows: Force-stop a process</h1>

taskkill /F /PID <process-id> 

Expected Output:

A fully automated CI/CD pipeline that builds, tests, and deploys code with zero manual intervention, ensuring high-quality software releases.

Reference: ByteByteGo System Design Newsletter

References:

Reported By: Sahnlam A – Hackers Feeds
Extra Hub: Undercode MoN
Basic Verification: Pass ✅

Join Our Cyber World:

💬 Whatsapp | 💬 TelegramFeatured Image