Learn GitLab CI/CD from the fundamentals to production readiness: environment setup, history & architecture, .gitlab-ci.yml & pipeline syntax, GitLab Runners, rules & workflow, variables & secret management, Docker integration (DinD & Kaniko), artifacts & package registry, caching, DAG pipelines with needs, matrix jobs, include & child pipelines, DevSecOps (SAST, DAST & Container Scanning), OIDC, environments & manual approval gates, deployment to Linux via SSH Ansible, deployment to Kubernetes, canary & blue-green, Auto DevOps, troubleshooting & monitoring, ending with a complete production-grade pipeline case study — 21 episodes in total.
Setting up the three mandatory foundations before diving into GitLab CI/CD: Git basics and the GitLab workflow, the YAML format, and shell scripting. Then installing the GitLab CLI and VS Code with the GitLab Workflow extension so your first pipeline can be written with validation directly in the editor.

Understanding why GitLab CI/CD has become the go-to choice at enterprises thanks to one all-in-one platform, then dissecting its core architecture: the GitLab Server, the GitLab Runner, and the declarative .gitlab-ci.yml file along with the stages, jobs, and scripts hierarchy.

Dissecting the anatomy of the .gitlab-ci.yml file from global keywords to stages definitions, then writing your first job with inline and multi-line scripts, handling errors with allow_failure, and assembling a complete hello-world pipeline with build and test stages.

Getting to know the three GitLab Runner classifications — shared, group, and specific — along with the shell, docker, and kubernetes executor types. Then registering your own runner with gitlab-runner register and routing jobs to specific runners using tags.

Mastering dynamic control flow with rules and workflow. Comparing the legacy only and except with modern rules, composing if, changes, and exists conditions, using the when parameter, and preventing duplicate pipelines with workflow-level rules.

Managing the values in a pipeline: GitLab's built-in predefined variables and custom CI/CD variables, understanding the protected, masked, and expand security flags, then retrieving secrets securely from HashiCorp Vault directly in .gitlab-ci.yml with id_tokens.

This episode dissects Docker integration in GitLab CI/CD: running jobs with custom images, the image build technique via Docker-in-Docker (DinD), then Kaniko which is more secure without a privileged daemon, all the way to automatically building and pushing images to the GitLab Container Registry.

This episode covers how to store build outputs with artifacts (paths, name, expire_in, when), transfer them between jobs and stages, limit transfers with dependencies, download them via the UI and API, then publish packages to the GitLab Package Registry.

This episode dissects the fundamental difference between artifacts and cache, how to configure caching with key, paths, and policy (pull-push, pull, push), creating dynamic cache keys based on lock files, then connecting runners to object storage for distributed caching.

This episode covers the limitations of linear stage pipelines, the Directed Acyclic Graph (DAG) concept that executes jobs the moment their dependencies finish, the use of the needs keyword along with its combination with artifacts, and pipeline duration savings of up to 50 percent or more.
