GitLab deploys code to GitLab.com up to 12 times daily using their own CI/CD platform, handling millions of developers without downtime. The deployment pipeline uses progressive rollouts through staging and production Canary environments (5% traffic), followed by full staging and production deployments. Key technical challenges include managing hybrid infrastructure (Helm charts for containers, Omnibus packages for Gitaly), handling database migrations with backward compatibility, and maintaining multi-version compatibility during deployments. The expand-migrate-contract pattern ensures safe schema changes, while post-deploy migrations run only after multiple successful deployments to minimize rollback risks. This approach validates GitLab's deployment features at massive scale before customers use them.
Table of contents
The business case for deployment velocityCode flow architectureDeployment pipeline makeupDeployment pipelineDatabase operationsResults and impactKey takeaways for engineering teamsImportant note on scopeMore resources2 Comments
Sort: