How to Build a CI/CD Pipeline on AWS with CodePipeline + GitHub 🚀

"You mean I can push code to GitHub and AWS will auto-deploy it?!"
Yes. You can. And it’s easier than you think.
In this post, I’ll walk you through building a complete CI/CD pipeline on AWS using CodePipeline + GitHub — step by step, with simple language, real-life analogies, and practical code snippets.
Whether you’re deploying a static site, Node.js app, or Docker container, this guide will help you go from zero to auto-deploy hero in under 20 minutes.
Let’s roll! 🎯
🧠 What is CI/CD (in Human Language)?
CI/CD = Continuous Integration + Continuous Deployment
CI: Every time you push code, it's tested and packaged automatically
CD: That packaged code gets deployed to your server — no more manual copy-pasting!
Think of it like setting up a robot that listens to GitHub and launches your app every time you update it.
🛠️ Tools You’ll Use
Tool | Purpose |
GitHub | Where your source code lives |
CodePipeline | Orchestrates the CI/CD process |
CodeBuild | Optional: Builds, tests, or packages your app |
S3 / EC2 / Lambda / ECS | Final deployment destination |
🧰 Prerequisites
A GitHub repo with your app (even a basic HTML file will work)
AWS account with permissions to use CodePipeline, CodeBuild, S3, EC2, etc.
Basic knowledge of Git
🚦 Step-by-Step: Create Your First AWS CI/CD Pipeline
Step 1: Connect GitHub to AWS
Go to AWS Console → CodePipeline
Click Create pipeline
Name your pipeline (e.g.,
my-awesome-pipeline
)In Source, choose:
Provider:
GitHub (version 2)
Connect your GitHub account
Choose your repo + branch
Step 2: Add a Build Stage (Optional)
If you need to compile or test your code:
Add a Build stage using AWS CodeBuild
Provide a
buildspec.yml
file in your repo:
version: 0.2
phases:
build:
commands:
- echo "Building..."
- npm install
- npm run build
artifacts:
files:
- '**/*'
If you're just deploying static files, you can skip this step.
Step 3: Add Deploy Stage
Choose where to deploy:
S3 (for static websites)
EC2 (via CodeDeploy)
ECS / Lambda for containers or serverless
📦 Example: Deploy to S3
Create an S3 bucket
In the Deploy stage, choose "Amazon S3"
Provide the bucket name
AWS will upload your build artifacts automatically
🎉 Done! Push code to GitHub → Pipeline triggers → S3 gets updated
🚀 Real-Life Example: Deploying a React App to S3
- Add this
buildspec.yml
to your React repo:
version: 0.2
phases:
install:
commands:
- npm install
build:
commands:
- npm run build
artifacts:
base-directory: build
files:
- '**/*'
Build stage runs
npm run build
and prepares filesDeploy stage pushes the
/build
folder to S3
Push to GitHub and watch the magic happen 🔮
🧠 Why Use CodePipeline?
✅ Fully managed, no servers to maintain
✅ Pay-as-you-go pricing
✅ Deep integration with AWS services
✅ Easy rollback, logs, and versioning
And best of all — no more "it works on my machine" excuses 💻🔥
⚠️ CI/CD Best Practices
✅ Use separate pipelines for staging & production
✅ Add tests in the build phase
✅ Use IAM roles — never hardcode AWS keys
✅ Enable notifications with SNS or Slack
🔚 Final Thoughts + Bonus Tip
CI/CD isn’t just a buzzword — it’s how modern devs ship fast and ship safe. With GitHub + AWS CodePipeline, you can automate your deployments like a pro.
💡 Bonus: Use GitHub Webhooks + AWS Lambda for ultra-custom workflows.
💬 Your Turn: What's Your CI/CD Setup?
Have you built a pipeline before? Want help customizing yours?
👇 Drop your repo or share your experience in the comments. Smash ❤️ if you found this helpful and share it with a dev buddy building their first app!
Together, let's automate the boring stuff — and focus on building awesome things. 🧡
Subscribe to my newsletter
Read articles from Yash Sonawane directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Yash Sonawane
Yash Sonawane
DevOps & Cloud Engineer | AWS, Docker, K8s, CI/CD Writing beginner-friendly blogs to simplify DevOps for everyone.