Knowing what a pipeline should do is one thing — knowing how to build it in GitHub Actions, Jenkins, or GitLab CI is another. Each platform models pipelines differently, manages runners differently, and integrates with Docker and Kubernetes in its own way. Engineering teams at Zerodha, Hotstar, and CRED run all three of these platforms across different product lines, and the engineers who can move confidently between them are the ones who get called when the deployment is broken at 2am.
What This Pillar Covers
- Building complete production workflows in GitHub Actions with OIDC, reusable workflows, and matrix builds
- Writing declarative Jenkinsfiles with parallel stages, shared libraries, and Kubernetes pod agents
- Configuring GitLab CI pipelines with runners, environments, merge request gates, and conditional rules
- Integrating Docker builds into all three platforms with layer caching and ECR authentication
- Deploying to Kubernetes clusters from CI using kubectl and Helm inside pipeline jobs
- Implementing automated testing gates — unit tests, integration tests with real dependencies, coverage enforcement, and E2E smoke tests
Who This Is For
DevOps engineers and platform teams actively working with GitHub Actions, Jenkins, or GitLab CI who need production-grade configurations they can adapt immediately — not toy examples.
Why This Matters in Production
Hotstar runs Jenkins for legacy services and GitHub Actions for new microservices on the same platform team. A pipeline misconfiguration that lets a broken image reach production during an IPL match is not recoverable in time — the damage is done in the first five minutes. Automated testing gates, proper caching, and environment protection rules are what separate a pipeline that catches bugs before production from one that merely automates the deployment of them.
Prerequisites
- CI/CD Fundamentals — pipeline anatomy, stages, artifacts, and environments
- Docker image building and registry authentication
- Basic Kubernetes concepts — Deployments, Services, and kubectl