🚀  Our new eBook is out – “CI/CD for Monorepos.” Learn how to effectively build, test, and deploy code with monorepos. Download now →

Introducing RubyGems Mirror

Like pretty much everything in the Ruby world, Semaphore would not exist without Bundler and RubyGems.org. So first of all I would like to say big thanks to the guys and gals for providing and maintaining such great tools for all of us. <3

As in every good story, there is a “but”. In the past few months, there were days when many of our users experienced network related issues, causing gem installs to be slow or fail completely. Our investigations have shown that when this happens, it is due to packet losses between a network in Germany that is outside our provider and Amazon’s servers.

Our permanent goal is to keep providing an enjoyable experience to our users. The dependency installation stage is a critical part of the continuous integration process, and we’re excited to announce some big improvements we’ve made in that area while isolating our platform from issues which we cannot control.

Improved repository caching

Our first step was to increase the capacity for caching gems and other dependencies for each project. In case of a cache miss, dependency installation, via commands such as bundle install, needs to run from scratch.

RubyGems mirror

The second step was to create a private RubyGems mirror, which I am happy to announce as launching today. The mirror is now used by all projects on Semaphore without any custom settings or configuration needed.

What that actually means for everyday usage? In beta period we noticed that bundle install and gem install commands run twice as fast using the mirror comparing to regular rubygems.org downloads. We’ll be more than happy to hear your observations about this.

You can control the use of Semaphore’s RubyGems mirror in project settings, just below build commands. So if you have any issues using our mirror, you can easily disable it (by default it’s on for all projects). As this is a fresh part of our platform, all feedback is more than welcome.

Also I would like to thank all our beta testers who greatly helped in testing and evaluating our work on the mirror. The positive reactions we got were overwhelming. It’s a pleasure to see that our efforts have an effect to so many people. 🙂

A note to all beta testers: we have removed your commands for setting up the mirror during beta period, because Semaphore now handles them globally.

Happy building!

Have a comment? Join the discussion on the forum