OBS goes Ruby On Rails 6!

In the recent past, there have been quite some attempts, by different contributors, to migrate the OBS API to Ruby on Rails version 6, which came out August last year. Lately, this got revisited by Lukas Krause as part of the SUSE Hack Week.

As a follow-up, we took the opportunity to finish the migration and now our reference server is running on Ruby on Rails 6, YAY! :clap: :clap:

This is an important step in order to make sure that the project stays future-proof and reliable. All developers benefit from an up-to-date framework with all the functionality they are used to. OBS admins will be delighted by an actively maintained foundation that keeps on receiving security updates and improvements once we released this to them later.

The upgrade to a new major version should be processed carefully and with a good amount of attention. Therefore, we decided to not only rely on our automated tests, we also deployed the upgrade in a production-like environment in order to make sure all the individual components keep on working smoothly together.

Other moving parts

It often happens that, while we are immersed in our daily work, we discover even more things which could potentially be improved or would be interesting to do.

Ideas like starting to use a new technology, upgrading certain components to a new software version, automating a repetitive part of a proccess…

So in the last couple of week we did exactly that.

We invite you to discover all the cool things we crossed off our TODO list. Keep reading to know more.

Safer Migrations

Every time a new migration gets introduced to our database, we ask ourselves: Is it safe to deploy and consequently run the migration at any time of the day?

Certain database migrations imply a downtime when running and this obviously affects our users. Therefore, we postpone the deployment to a better moment, normally to our maintenance window on Thursday mornings. This means that sometimes, we have to stop doing deployments for a while.

In order to minimize the impact of this kind of situations, we have decided to start using the strong_migrations gem. Their own description explains everything:

“Strong Migrations detects potentially dangerous operations in migrations, prevents them from running by default, and provides instructions on safer ways to do what you want.”

The addition of this gem will help us to detect unsafe migrations and to get closer to a Zero Downtime scenario.

Obs-tools and OpenQA

Our team maintains the obs-tools repository. It contains some useful tools for our project. For instance a bot that builds packages for all our pull requests on Github on our reference server.

One of the pending tasks in our TODO list was the containerization of these tools. This simplifies the installation and creates a uniform setup in any machine. So from now on, our tools host is running just those docker containers.

Get in Touch

A lot of improvements have been done these weeks. Little steps to make OBS easier to use, contribute and maintain.

We hope you also find them useful and they inspire you to start contributing to the OBS.

Do you have any question or suggestion? Have you noticed any malfunction in OBS? Get in touch with us:

  • On GitHub, by opening an issue and / or commenting on an already opened issue.
  • On IRC, by talking directly to us. We are in the channel #opensuse-buildservice on Libera.Chat.

We are looking forward to reading from you and crossing more tasks off the list. :heavy_check_mark: