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 the work ranSteps in order: 1 Agree the workflows: Which builds, the size of a small fix, the terms; 2 Set up read-only access: Run results, and a branch for proposed fixes; 3 Investigate every failure: Read the log and reproduce it on a branch; 4 Make the smallest fix: Or explain what only you can change; 5 Your team merges: You review and merge each change; 6 Send the summary: Every failure seen and how it ended. You decide at step 1 and step 5.1 Agree theworkflowsWhich builds, the size ofa small fix, the terms2 Set up read-onlyaccessRun results, and abranch for proposedfixes3 Investigate everyfailureRead the log andreproduce it on a branch4 Make the smallestfixOr explain what onlyyou can change5 Your team mergesYou review and mergeeach change6 Send thesummaryEvery failure seen andhow it endedYou decide here How the work ranSteps in order: 1 Agree the workflows: Which builds, the size of a small fix, the terms; 2 Set up read-only access: Run results, and a branch for proposed fixes; 3 Investigate every failure: Read the log and reproduce it on a branch; 4 Make the smallest fix: Or explain what only you can change; 5 Your team merges: You review and merge each change; 6 Send the summary: Every failure seen and how it ended. You decide at step 1 and step 5.1 Agree the workflowsWhich builds, the size of a small fix, theterms2 Set up read-only accessRun results, and a branch for proposed fixes3 Investigate every failureRead the log and reproduce it on a branch4 Make the smallest fixOr explain what only you can change5 Your team mergesYou review and merge each change6 Send the summaryEvery failure seen and how it endedYou decide here
The steps in order. A box with a coloured border is where the client decided.

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.

Get a priceSee what is included

More case studies.

All case studies

Get a price for something like this

You are asking about: Keep CI green.

Add detail (optional)

A web address anyone can open, with no login in it. No code or logs.

We reply by email. Sending this emails your request to our team; nothing is kept in a website database. Please do not send passwords, keys or customer records. Privacy notice.

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.