Nourish Care

Nourish Care reduced their test runs from 3hrs to 12 mins with Semaphore

Discover what Semaphore can do for your team 🧑‍💻

Zoe Walker, Tech Lead at Nourish Care, explains that Semaphore’s CI/CD capabilities enable fast, efficient, and reliable deployments with automated quality checks and seamless integration across development stages.

In this video you’ll find the answers to these questions:

What role does CI/CD play in your daily operations?

Every time we open a pull request, we run it through various checks for quality before we even think about anything else. So we have it kind of in conditional blocks. So the first thing that happens is any kind of linting. And then for Rails, we have best practices that run to check that we’re doing things the right way, we use things like RuboCop, and then if all those pass, then we’ll then run our automated test suite. I think we currently have about 8,000 tests that run every time we do a pull request. And then if those pass, then we’ll get a green tick on a request. And once it’s been approved by someone, then we can merge in. And then once it’s merged, it gets automatically deployed to our development environment, which is where we kind of test things. And then we do weekly releases to go up to higher environments. So we go from staging to beta and then beta to production a week later. And all of that is through Semaphore.

Why did you choose Semaphore as your CI/CD platform?

We’ve been at Nourish for three years, I believe the current implementation of Semaphore we’ve been using for five years. So I spoke to Ben who implemented it, and he said before Semaphore 2.0 we were using Semaphore 1.0. So I think we’ve been with Semaphore for a really long time, and I guess we’ve just never felt the need to change. It’s not something that ever really causes issues, it’s ever just what we’re doing on top of it might break slightly and we have to fix things. But yeah, Semaphore is great. It just works. We are adding new microservices all the time, and I have set some of those up in Semaphore, and it has been really quick and easy. It’s just a case of adding the GitHub repo into Semaphore and then making sure it has the YAML to configure what happens. And then, yeah, off it goes, we can very quickly get it deployed.

Which Semaphore features do you find the most useful?

The main one would be the paralyzed test suites that we can run. So with the 8,000 tests, they take about three hours to run if you run them one at a time. But we have it running over 20 nodes, so it takes about 12 minutes, I think, to run all of these 8,000 tests. And we use something called Knapsack, which means that it optimizes how they run so that everything takes about same amount of time. Other good features, so we do a lot of UI testing using Capybara, and we get screenshots when those fail, and Semaphore allows us to pull those out and give them as artifacts so that we can very easily see what went wrong, which massively helps because UI errors don’t tend to really tell you what actually happened, but going and seeing, oh, it’s got stuck on that page, is a super quick way of solving that problem.

Also, the caching of resources is really good. So things like node modules, we can make our builds much faster if we just cache those every time and reuse them and only get them when we have to. What else? So I think we have roughly 20 production servers. And one thing that’s really nice is when I do the deployment, I press one button and it just goes to all 20 at the same time, and I can easily see the logs for each one. If they fail, I can just rerun that one. And that’s super helpful. And then I think lastly, just having it all in a YAML file so that we can just treat it as infrastructure, as code and very easily review any changes and see what’s happened and why something may have broken is really useful.

How do you find Semaphore support?

So we very rarely have to use support. I asked around, and most people hadn’t used it. I used it about a month or two ago and I got a response really swiftly. They were really helpful. It turned out to be completely a me issue, but the person that was helping me still offered to give solutions and offer advice, which I really appreciate, because they could have just gone, no, that’s dumb, why are you asking us? So yeah, it’s been really positive.

Why would you recommend Semaphore?

The speed of setting up, it’s really quick and easy, so you haven’t got much to lose from trying it. And it’s really customizable. We have lots of different pipelines running. We can block things so that certain things can’t end up in production accidentally, which is a major stress relief. I don’t even really think about a lot of what I’m doing anymore. I just press merge and then know that it’ll be in a staging environment in 20 minutes and it’s just there. And yeah, it’s just really easy to use. So definitely recommend it.

Industry

Health Care, Electronic Health Record, Information Technology, Nursing and Residential Care

Headquarters

Europe, Middle East, and Africa (EMEA)

Stack

Vue

Ruby on Rails

Rail views

Angular

AWS

Python

Typescript

Go

More customer stories

“Semaphore 2.0 allows us to build, tag, push, and run Docker images easily. This makes building a powerful pipeline where we can deploy to our Kubernetes cluster fairly easily and quickly.”

Senior Software Engineer

Read case study

“Semaphore allows us to build anywhere from two to twenty branches in parallel, each one in a threaded environment. We had thousands of tests that were running for a really long time and with Semaphore we got the build to run in under 20 minutes.”

QA Lead at 500px

Read case study

“We were using Jenkins to build the old system, and it was hard to maintain and quite painful. We looked at other hosted CI services, but they were very unreliable. When we found Semaphore, we got our application up and running pretty quickly. We now use it for all projects.”

CTO at Simply Business

Read case study