· DevOps
Enterprise Software Vendor
Problem
Build times averaging 45+ minutes were blocking developer throughput and delaying releases.
Outcome
Pipeline rebuilt with proper caching; average build time under 6 minutes, same test coverage.
Key metrics
- Average build time
- <6 min
- Previous build time
- 45+ min
- Test coverage change
- None lost
What we did
The client's monorepo had accumulated 45 minutes of CI time — a mixture of uncached Docker builds, redundant test runs, and a pipeline that had grown organically over four years without ever being refactored.
We spent the first week profiling the pipeline rather than optimising it. Using GitHub Actions timing data and BuildKit build graphs we found that 60% of the time was in a single Docker build stage that invalidated on every run because it copied source files before installing dependencies.
The fix for that stage alone cut 18 minutes. We then introduced Nx for build graph analysis in the monorepo — only the packages affected by a given commit run their tests. For the shared test infrastructure we moved to a matrix strategy with parallel runners.
After two weeks the average build time was 5 minutes 40 seconds. No tests were removed. Coverage stayed identical. The engineering team described it as the highest-leverage two weeks we'd spent with them.
Have a similar problem?
Start a project →