Migrating a Berlin Media Company from Jenkins to GitHub Actions, Cutting Build Time by 50%

Client Profile

A Berlin-based digital media company operating a content platform and advertising technology stack serving publishers across Germany, Austria, and Switzerland. The engineering team of 25 manages a microservices architecture with frequent daily deployments.

Industry Digital Media
Location Berlin, Germany
Company Size ~85 employees
Duration 3 months

Technologies Used

GitHub Actions Docker Kubernetes Terraform

Business Challenge

The client ran a self-hosted Jenkins cluster that required constant maintenance — plugin updates, security patches, node scaling, and frequent build failures due to resource contention. Two engineers spent roughly 30% of their time managing Jenkins infrastructure instead of shipping product features. Build times averaged 18 minutes per pipeline run, and the queue during peak hours added another 10-15 minutes of wait time.

Solution

We migrated all CI/CD pipelines from Jenkins to GitHub Actions over three months. Each pipeline was rewritten to leverage GitHub Actions’ native caching, parallel job execution, and managed runners — eliminating the need to maintain CI/CD infrastructure. Docker build layers were optimised, and test suites were parallelised across multiple runners. We migrated pipelines one team at a time, running both systems in parallel during the transition.

Outcome

Average build time dropped from 18 minutes to 9 minutes — a 50% reduction. Queue wait times were eliminated entirely with GitHub Actions’ elastic runner pool. The two engineers previously maintaining Jenkins redirected their time to product development. Annual CI/CD infrastructure costs decreased by approximately €15,000 after decommissioning the Jenkins cluster.

Process

Pipeline Audit

Catalogued all 40+ Jenkins pipelines, identified shared libraries and plugins in use, and mapped dependencies between pipelines and deployment targets.

GitHub Actions Architecture

Designed a standardised workflow structure using reusable workflows and composite actions, replacing Jenkins shared libraries with a maintainable equivalent.

Build Optimisation

Optimised Docker builds with multi-stage builds and layer caching. Parallelised test suites across multiple runners, reducing the critical path for each pipeline.

Team-by-Team Migration

Migrated pipelines one engineering team at a time, running Jenkins and GitHub Actions in parallel for each team until the new pipeline was validated in production.

Jenkins Decommission

After all teams were migrated and stable for two weeks, decommissioned the Jenkins cluster and associated infrastructure, recovering compute and storage resources.

Documentation and Training

Delivered training sessions on GitHub Actions workflow authoring, debugging, and best practices. Updated all deployment runbooks to reference the new pipeline architecture.

Conclusion

The migration from self-hosted Jenkins to GitHub Actions eliminated infrastructure maintenance overhead, halved build times, and freed engineering capacity — delivering both cost savings and developer productivity gains.

Ready to Transform Your Infrastructure?

Book a free consultation with our team to discuss your DevOps and cloud engineering needs.