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

Yash SonawaneYash Sonawane
4 min read

"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

ToolPurpose
GitHubWhere your source code lives
CodePipelineOrchestrates the CI/CD process
CodeBuildOptional: Builds, tests, or packages your app
S3 / EC2 / Lambda / ECSFinal 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

  1. Go to AWS Console → CodePipeline

  2. Click Create pipeline

  3. Name your pipeline (e.g., my-awesome-pipeline)

  4. 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

  1. Create an S3 bucket

  2. In the Deploy stage, choose "Amazon S3"

  3. Provide the bucket name

  4. 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

  1. 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:
    - '**/*'
  1. Build stage runs npm run build and prepares files

  2. Deploy 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. 🧡

1
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.