CI/CD with GitHub Actions for Newbies
A two-part series for beginners: start with CI/CD fundamentals through a first-hand pipeline that deploys a React + Node.js web app to AWS EC2 with Docker, then dive into the things basic GitHub Actions tutorials tend to skip — concurrency, the branch rule for reading YAML, the workflow_* family, dependency caching, matrix, Docker Hub instead of building on the server, GITHUB_TOKEN permissions, OIDC to retire long-lived credentials, and environment + approval gates.
CI/CD Concepts and Your First Pipeline on AWS EC2
A step-by-step guide to deploying a React + Node.js web app to AWS EC2 with Docker, then wiring up an automated CI/CD pipeline with GitHub Actions. Walks through CI/CD fundamentals, the difference between Continuous Delivery and Continuous Deployment, the standard pipeline stages (Source → Build → Test → Quality Gate → Package → Deploy → Verify), GitHub Actions terminology, common deploy strategies, then builds a first end-to-end pipeline. Aimed at DevOps newcomers.
Things GitHub Actions Tutorials Tend to Skip
After Part 1's first pipeline, this article covers 9 things basic CI/CD tutorials skip about GitHub Actions: concurrency control (with the github.ref gotcha), the branch rule for reading YAML on external events, the workflow_* family (dispatch, call, run — with the head_sha gotcha), cache dependencies, matrix strategy, Docker Hub instead of building on the server, GITHUB_TOKEN permissions, OIDC for AWS (no more long-lived SSH keys), and environment + required reviewers.