> Markdown version of [/videos/143-gitlab-ci-pipelines-for-a-whole-company](https://www.wearedevelopers.com/videos/143-gitlab-ci-pipelines-for-a-whole-company). Every page supports `.md` or `Accept: text/markdown`. Links point to the HTML versions so they work for humans too. Agent guide: [/agents.md](https://www.wearedevelopers.com/agents.md). --- # GitLab CI pipelines for a whole company Martin Nik explains how AKI escaped undocumented Jenkins toil by adopting a standardized GitLab CI monorepo. Learn how they slashed operations support to just eight hours a month. - **Speakers:** Martin Beránek - **Event:** WeAreDevelopers LIVE - **Published:** May 12, 2021 - **Duration:** 32:29 - **URL:** https://www.wearedevelopers.com/videos/143-gitlab-ci-pipelines-for-a-whole-company ## Summary Martin Nik from the software house AKI details their organization's journey of migrating from a messy, undocumented Jenkins setup to a standardized GitLab CI infrastructure. Initially, their Jenkins pipelines—written in Groovy—had devolved into an unmanageable "toil" characterized by high support costs, lack of versioning, and frequent developer frustration. To resolve this, AKI transitioned to GitLab CI, leveraging a monorepo approach to consolidate pipeline logic. This shift allowed them to recycle CI templates across diverse platforms (from iOS to Node.js) via the `include` statement, drastically reducing operations support time from an unpredictable burden to just eight hours a month. The new architecture prioritizes a core philosophy: keep your infrastructure "simple and standard." AKI utilizes Docker images to customize runtimes and Docker Compose for local testing, ensuring parity between developer environments and continuous integration. To optimize execution speed, the team adopted the `needs` statement to create a Directed Acyclic Graph (DAG), bypassing strict sequential stage constraints. Recognizing that sharing data via artifacts can be computationally expensive, they implemented local caching strategies—including Verdaccio—to manage massive `node_modules` folders. Furthermore, they integrated tools like Renovate to automate dependency updates through automated merge requests, and Danger for static analysis to validate Git Flow guidelines. A fundamental takeaway from AKI's migration is the importance of documentation and explicit accountability. Operating on the premise that undocumented decisions invariably lead to misunderstandings, the team embeds clear explanations and explicitly names responsible reviewers directly within the pipeline code. They also emphasize educating developers by implementing non-blocking "soft fail" jobs—such as flagging oversized Docker images—to gently enforce best practices without disrupting productivity. By treating CI configuration with the same rigor as application code, documenting technical "pitfalls," and maintaining a centralized monorepo, AKI empowered their operations team to take ownership of infrastructure features rather than simply fixing broken builds. **Keywords:** gitlab ci pipelines, jenkins migration challenges, ci/cd monorepo architecture, directed acyclic graph pipelines, pipeline standardization, docker caching optimization, renovate dependency updates, hashicorp vault integration, gitlab deployment environments, verdaccio local package cache, node_modules optimization, danger static analysis, devops support cost reduction, pipeline documentation practices, git flow validation ## Chapters 1. **Introduction to Aki and the operations department** (00:18) — Overview of a fast-changing software house and its approach to operations and standardization. 1. **Challenges with legacy Jenkins and Groovy pipelines** (03:11) — How undocumented, unversioned, and messy codebases led to unmaintainable CI pipelines and developer toil. 1. **Justifying the migration to a new CI system** (05:50) — Calculating support hours and operational costs helped management decide to start over with a new CI platform. 1. **Utilizing monorepos and documentation for shared pipelines** (07:48) — Adopting a monorepo approach for managing shared CI configurations improves maintainability and ensures self-explanatory documentation. 1. **GitLab CI pipeline stages and dependency graphs** (10:13) — Using the needs statement to create directed acyclic graphs speeds up complex multi-stage pipeline execution. 1. **Applying clean code principles to pipeline definitions** (13:29) — Recycling pipeline templates via include statements, establishing clear code ownership, and properly documenting workarounds minimizes developer frustration. 1. **Testing and environment management in GitLab CI** (18:45) — Leveraging Docker Compose for tests, dynamic GitLab environments, and Danger for static analysis ensures consistent code quality. 1. **Optimizing pipeline performance with local caching** (22:00) — Mounting volumes and using local registries like Verdaccio mitigates the high network cost of fetching heavy dependencies. 1. **Lessons learned from maintaining monorepo pipelines** (24:57) — Enforcing image size limits, automating dependency updates with Renovate, and using Gitmoji streamlines pipeline evolution without disrupting developers. 1. **Migration outcomes and physical runner management** (27:21) — Transitioning to YAML-based GitLab CI drastically reduced operational support hours and improved team visibility over infrastructure changes. 1. **Feature requests for future GitLab CI versions** (29:54) — Enhancements like native HashiCorp Vault integration, map variables, and Jenkins-style workspaces would further simplify pipeline configuration. ## Related Moments - [The ongoing role of continuous integration pipelines in GitOps](https://www.wearedevelopers.com/videos/267-gitops-the-past-present-and-future) (from "GitOps: The past, present and future") - [Architecture of a GitOps backup pipeline demonstration](https://www.wearedevelopers.com/videos/757-integrating-backups-into-your-gitops-pipeline) (from "Integrating backups into your GitOps Pipeline") - [Structuring CI/CD pipelines with integrated security and quality checks](https://www.wearedevelopers.com/videos/83-enabling-automated-1-click-customer-deployments-with-built-in-quality-and-security) (from "Enabling automated 1-click customer deployments with built-in quality and security") - [Exploring the core benefits of adopting GitOps](https://www.wearedevelopers.com/videos/547-how-to-gitops-your-cluster-with-flux) (from "How to GitOps your cluster with Flux") - [Building automated continuous deployment pipelines and final architectural insights](https://www.wearedevelopers.com/videos/100111-5-years-in-cloud-native-the-good-the-bad-and-the-bill) (from "5 Years in Cloud Native: The Good, the Bad, and the Bill") - [Evaluating current trends in CI/CD pipelines](https://www.wearedevelopers.com/videos/333-cd2cf-continuous-deployment-to-cloud-foundry) (from "CD2CF - Continuous Deployment to Cloud Foundry") ## Related Articles - [How Microsoft worked around a Git limitation to shrink a repository by 94%](https://www.wearedevelopers.com/magazine/499-how-microsoft-worked-around-a-git-limitation-to-shrink-a-repository-by-94) - [How We Built a Worry-Free System That Runs for 10+ Years – And What We’d Do Again](https://www.wearedevelopers.com/magazine/751-how-we-built-a-worry-free-system-that-runs-for-10-years-and-what-we-d-do-again) - [Liuba Gonta and Yuliya Khadasevic - GitHub Copilot Beyond the Basics - 10 Ways to Elevate Your Coding](https://www.wearedevelopers.com/magazine/490-liuba-gonta-and-yuliya-khadasevic-github-copilot-beyond-the-basics-10-ways-to-elevate-your-coding) - [Stop Googling Git Commands. Start Actually Learning Git.](https://www.wearedevelopers.com/magazine/730-stop-googling-git-commands-start-actually-learning-git) ## Related Jobs - [DevOps Engineer - CI/CD & Platform Engineering](https://www.wearedevelopers.com/jobs/48472-devops-engineer-ci-cd-platform-engineering) at **procilon Group** - [Founding Developer Advocate](https://www.wearedevelopers.com/jobs/48425-founding-developer-advocate) at **Plumber** - [Software Engineer, Infrastructure Platform](https://www.wearedevelopers.com/jobs/ext/1940513-software-engineer-infrastructure-platform) at **Docker, Inc.** - [Manager, Engineering, Secure Build and SCS Services](https://www.wearedevelopers.com/jobs/48447-manager-engineering-secure-build-and-scs-services) at **Docker, Inc.** - [Cloud Engineer (German)](https://www.wearedevelopers.com/jobs/ext/2908194-cloud-engineer-german) at **Stackit** - [Software Engineer, Infrastructure Platform](https://www.wearedevelopers.com/jobs/ext/2004010-software-engineer-infrastructure-platform) at **Docker, Inc.**