CI/CD Pipelines with GitHub Actions & Docker Tutorial
Learn CI/CD Pipelines with GitHub Actions & Docker step by step through 46 structured lessons. The course starts with essential concepts and progresses toward practical, advanced topics, with explanations, syntax, examples, common mistakes and exercises you can try yourself.
- Level: Beginner to advanced
- Format: 46 free, self-paced lessons
- Best for: Students, career changers and developers refreshing their skills
Start learning CI/CD Pipelines with GitHub Actions & Docker →
What You Will Learn
This learning path covers the following areas in curriculum order:
- CI/CD Foundations
- Workflow Design
- Build, Test, and Quality Gates
- Docker Builds and Registries
- Deployments and Environments
- Security and Governance
- Advanced Automation and Capstone
Who This Course Is For
This tutorial is suitable for complete beginners as well as learners who already know some programming and want a structured reference. Start from the first lesson if the subject is new to you. Experienced learners can use the curriculum below to jump directly to a specific concept.
How to Use This Tutorial
- Read each lesson in curriculum order and run every example yourself.
- Change the examples to test your understanding instead of only copying them.
- Complete the exercises and review the common-mistake sections before moving on.
- Bookmark this course page so you can return to the complete lesson index.
Course Contents
CI/CD Foundations
- CI/CD Course Introduction and Prerequisites
- Continuous Integration vs Continuous Delivery vs Deployment
- Pipeline Architecture and the Software Delivery Lifecycle
- GitHub Actions Architecture: Events, Runners, Jobs, and Steps
- Planning a Secure CI/CD Pipeline
Workflow Design
- Workflow Files, Triggers, and Event Filters
- Jobs, Steps, Dependencies, and Conditions
- Contexts, Expressions, Variables, and Environment Files
- Workflow Permissions and the GITHUB_TOKEN
- Using Third-Party Actions Safely
- Shell Commands and Error Handling in Workflows
- Debugging Failed GitHub Actions Workflows
Build, Test, and Quality Gates
- Dependency Installation and Dependency Caching
- Build Matrices for Multiple Versions and Platforms
- Linting, Formatting, and Static Analysis Gates
- Unit Tests, Integration Tests, and Test Reports
- Node.js CI Pipeline
- Python CI Pipeline
- React Application CI Pipeline
Docker Builds and Registries
- Docker Builds in GitHub Actions
- Image Tags, Immutable References, and Release Versions
- Publishing Images to GitHub Container Registry
- Publishing Images to Docker Hub
- Container Image Scanning and SBOMs
- Docker Build Security Best Practices
Deployments and Environments
- Deployment Environments and Protection Rules
- Secrets, Variables, and Configuration Management
- Deploying to a Linux Server over SSH
- Deploying a Docker Compose Application
- Staging and Production Deployment Promotion
- Database Migrations in a Deployment Pipeline
- Health Checks, Smoke Tests, and Rollbacks
- Zero-Downtime Deployment Strategies
Security and Governance
- Least Privilege for CI/CD Pipelines
- OpenID Connect for Cloud Deployments
- Code Scanning with CodeQL
- Secret Scanning and Dependency Updates
- Branch Protection and Required Checks
- Audit Logs, Provenance, and Supply Chain Security
Advanced Automation and Capstone
- Reusable Workflows
- Composite Actions
- Concurrency Controls and Deployment Queues
- Self-Hosted Runners: When and How to Use Them
- Automated Releases, Changelogs, and Release Notes
- Pipeline Cost, Performance, and Reliability
- Capstone: Build, Test, Publish, and Deploy a Docker App
Frequently Asked Questions
Is this CI/CD Pipelines with GitHub Actions & Docker tutorial free?
Yes. The lessons listed on this page are free to read and can be completed at your own pace.
Do I need previous experience?
No previous experience is required for the introductory lessons. Some advanced modules are easier if you first complete the fundamentals in this course.
How should I practise?
Type and run the examples, deliberately change their inputs, predict the result before execution and build a small project after completing each major section.
