🍊 ARM your continuous integration system with fruits! 🍌

By Bruno Verachten

Elevator Pitch

CI has made our jobs easier, as we can concentrate on development, and not anymore on maintaining a machine despite dependency hell. But what if your build queue is too long because of the success of your CI system? Adding a new ARM machine running Docker to the runners herd in 15 min is possible!

Description

Being able to build/test/deploy on a remote machine each time we commit has been a major progress for us, developers. πŸš€

Furthermore, by using Docker, things have been so much easier! No more dependency hell when you have to build and test two incompatible products.

This solution looks almost perfect… until you reach a threshold.

As your Gitlab-ci will become more and more popular within your organization, you may experience longer waiting queues until the next batch of Runners is released.

So you may go from praising the CI to cursing the CI.

You maybe have a Raspberry Pi taking dust on your desk or in your drawer. What’s the point? What’s the connection with the CI?

Well… What if I told you you could transform this momentarily useless piece of hardware into a brand new Gitlab-ci Runner? This way, you could shorten the time your jobs spend in the queue.

But wait, there is more. What if there was a cheaper solution that could allow you to create a Gitlab-ci Runner for a 15€ investment? You may have heard about Banana Pi, Orange Pi, and other variations of fruit Pi(e). The competition is harsh between these manufacturers, and you can find pretty nifty machines for darn cheap. These machine can run Docker, and even Gitlab-Runner on top of it.

What if you could even build Docker images through CI on these machines?

Is this even possible?

It is. You shall leave this talk by knowing the basics to start your own Gitlab Runner for 15€.

Notes

The subject I address is not new but not mainstream either (yet). I’ve been working on this subject for quite a while now, and have lead a few workshops on this very subject in the company I work for. I have also written a few articles on ARM/Linux/Docker/Gitlab in my company, and I am in the process of rewriting them to publish on medium and on Worldline Tech. I have given this talk at DevFestGR8 and will give it to Full Stack Developer Conference Finland.

This is a feedback on experience, but there are quite a few technical takeaways.