Cutting CI Feedback Time with Checkpoint Restarts
Case study — pipelines that took over ten minutes, and restarted from scratch whenever a long job failed, were slowing delivery. Restructuring the pipeline and making long jobs resumable cut feedback time by roughly 5×.
🌱 A rough idea, planted recently. Expect rough edges — it will grow.
On this page
Context
At a fintech building real-time trading UIs, small teams ship often. The whole delivery rhythm depends on how quickly a change gets from a commit to a trustworthy green tick.
Problem
Our CI/CD pipelines regularly took more than ten minutes. That is long enough for people to context-switch, stack up more changes, and stop treating the pipeline as a conversation. And when a long-running job failed partway through, it started again from zero, so one failure could double the wait.
What I did
- Optimised the pipelines so a change got its answer in under two minutes instead of over ten.
- Made long-running jobs restartable from checkpoints. Instead of one all-or-nothing step, the work records its progress, and a re-run carries on from the last completed checkpoint rather than from the start. It’s the same idea as Resumable Batch Migrations: idempotent units, a durable record of what’s done, safe re-runs.
Outcome
Pipelines went from over ten minutes to under two, roughly a 5× improvement in feedback time, and a failure in a long job no longer meant paying for the whole run again.
Patterns that help (general, not a log of that pipeline)
- Measure the wait, not the jobs. What matters is the time until a developer gets an answer they can act on; the fastest, most-likely-to-fail checks should report first (Shift Left Testing).
- Independent jobs in parallel, cached work never repeated. The usual first wins on any slow pipeline.
- Treat every long job as a batch job. If it can fail halfway, it should be able to resume halfway.
- Fail loudly and specifically. A checkpoint is only useful if the failure tells you where you are; transient errors can retry, real ones should stop clearly.
What I’d do differently
Track pipeline duration and flake rate as first-class metrics from the start (DORA Metrics). Slow pipelines creep in one reasonable-looking step at a time, and a trend line catches that long before people start complaining.
Related notes
Fast Feedback from Deploy Previews · A Testing Strategy Teams Actually Adopted · Slicing Pull Requests · Playwright
- #ci-cd
- #pipelines
- #checkpointing
- #developer-experience
- #feedback-loops
- #case-study
↩ Linked from (0)
Nothing links here yet — it’s a fresh shoot.
↪ Links to (7)
Related by topic
- Seed
First Week in a New Codebase
Developer tooling - Seed
Working with AI Coding Agents
Developer tooling - Growing
Contributing to Open Source, Then and Now
Career - Growing
Git Bisect: Binary Search for the Commit That Broke It
Developer tooling