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

1

Pipeline Audit

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

2

GitHub Actions Architecture

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

3

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.

4

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.

5

Jenkins Decommission

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

6

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.