Case study · Software team
The builds kept failing and nobody owned them. Now every failure is investigated, and the team sees a monthly summary.
The main branch was red more than once a month and people had started merging past failing checks. Every failure is now investigated.
- Who
- A software company with six developers and one main repository.
- The problem
- The main branch was red more than once a month, and people had started merging past a failing check.
- What we did
- Watch the named build workflows, investigate every failure, and open a small fix or explain what only the team can change.
- The result
- Every failure ends in a small fix for the team to review, an explanation, or a quote for a bigger job. Each month's summary shows which.
- Time
- Ongoing. A monthly service.
What was going on.
The company's automated checks ran on every change, and more and more often they failed for reasons that had nothing to do with the change. A developer would stop what they were doing, look, and usually find that the problem was elsewhere: a version that had moved, a service that was slow, a test that sometimes failed.
People adapted in the worst way. Some started merging past a red check. Others stopped looking at it. The engineering lead knew a real bug would one day ship behind a check everyone had learned to ignore, but nobody had the time to own the problem.
What we found.
A failing build is always somebody's interruption, and the fix always loses to the feature work. The only cure is that someone owns it. So we took on the named build workflows on the main branch.
When one fails, we read the log, reproduce the failure on a separate branch and decide which of three things it is: a small fix we can make, something only the team can change, or a bigger job. Each failure ends in one of those three, never in silence.
The technical detail
Monitoring covers the named workflows on the default branch of one repository, with read-only access to run results. Each failure is reproduced on a fork or branch, the smallest change is made, and the same job is run to a pass before a pull request is opened. A small fix means no more than two files and about 30 lines. Anything outside the repository, such as a secret, a runner or a permission, is explained with evidence and not changed. A flaky test is written up with the evidence and not patched.
What we did.
How we checked it.
These had to pass before we asked for sign-off.
- For each fix, the failing job passes on the proposed change, on the same trigger as before.
- No build file or setting outside the failing job is changed.
- Each small fix changes no more than two files and about 30 lines, and returns the build to how it last passed.
- Each month's summary lists every failure seen on the named workflows and how it ended.
What they have now.
Each month the team receives the fixes it needed as proposed changes with a passing run, explanations where the cause was outside the repository, and a short written summary of every failure and how it ended. The team reviews and merges each fix.
In the first months most failures came down to a small number of causes. The summary made it easy to see which deserved a proper repair, and the team bought one of those as a separate job.
What we did not do.
- We never merge to the main branch. That stays with the team.
- We did not change secrets, runners, permissions or billing.
- A flaky test is written up with the evidence rather than patched, and a repair larger than a small fix is quoted as its own job.
- We fix failures in the build, not bugs the tests correctly report.
- There is no out-of-hours cover and no guaranteed response time.
The service behind this.
If failing builds are everyone's interruption and nobody's job, the cure is to give them an owner and a monthly summary.
Monthly service
Keep CI green
We watch the workflows you name. When one fails on your default branch we investigate it and open a small fix pull request, or tell you what only you can change.
$255/month. Billing is monthly under the written terms we agree with you. Nothing is charged until you have agreed them.
More case studies.
One-off job
Checkout stopped taking orders after an update
Customers could fill a basket but not pay. We found the cause on a copy of the shop, fixed it and proved it with test orders.
Online store · Two days
One-off job
Genuine payment messages were being rejected
Paid customers still showed as unpaid. The company's code was checking the wrong thing. We fixed it without switching the check off.
Software team · Three working days
Project
Hundreds of products flagged in Google's shopping feed
Several problems at once, and every earlier fix had only revealed the next one. We grouped them by cause and worked through them in order.
Online store · Three weeks, mostly waiting for Google to reprocess
Get a price for something like this
You are asking about: Keep CI green.
Sending this is not an order. We check we can help, then agree what is included, safe access and the price in writing before any work. Prefer email? hello@syntheticindustry.ai.