Highlights of the OBS frontend development – Sprint 15

This is the first in a series of posts in which the frontend hackers want to report to the OBS community about the progress they have made developing the web user interface and the API of the OBS. You can expect these posts to come in roughly every 2 weeks, and we very much hope you enjoy them!

But first things first, let us introduce how we are getting to these results.

Our process: SCRUM

Since a couple of months, the OBS frontend developers that are employed by SUSE started to do agile software development, specifically SCRUM. SCRUM is a process used to manage complex development with a team packing closely together to achieve more (SCRUM is a rugby analogy).

You should read up on it, it's has been a very interesting ride for us so far. In SCRUM there are some roles to fulfill. Adrian is our product owner responsible for expressing the goals/requirements of all the OBS stakeholders to the developers via our product backlog. The development team consists of every frontend hacker available, doing the work which is organized in our sprint backlog. During a period of 2 weeks (called the sprint) the team is responsible for delivering incremental changes to the the OBS. And to facilitate all of this there is our scrum master Björn who is responsible for making sure everyone else adheres to the SCRUM theory, practices, and rules.

This is our process we have been working with for the last couple of months and from now on we want to report our sprint results to you in this little series.

Results Sprint 15

So here are the results the OBS frontend team has achieved in the last 2 weeks.

Fix image branching from remote

When you branch a package from a project on another OBS instance over interconnect the OBS would not pick up the repositories from the project you branch from. This only worked for branching from a local project. This was fixed in the pull request #3000.

Improving wiping binaries

With pull request #3030 it's now possible to wipe all built binaries for the package and all built binaries per architecture. Thanks to Andreas Färber for reporting this!

Package with names that include a mime type suffix

After we have updated the frontend to Ruby on Rails version 5 packages with a name like python-ruamel.yaml started to be rendered as YAML by rails. This change was part of a Ruby on Rails pull request (#20831) which was required for the new API application feature in Rails 5.0. Previously to this the path parameter :format was nil and it was falling through to the default format of text/html. In this case it's better to be explicit, so turn off the :format path parameter and provide an explicit default of html so that it doesn't use the path, e.g:

scope format: false do
  defaults format: 'html' do
    constraints my_file: %r{[^\/]+} do
      get 'my_files/:my_file', to: 'my_files#show', as: 'my_file'

With pull-request #3061 we have solved this.

Job History

Whenever a new build starts, OBS is collecting some metadata and adds it to the so called jobhistory of a package. Data that goes into the jobhistory are the time when a build started, it's duration, build result, reason why a build was started, the build revision and the worker instance where the build was running.

It was already possible to view these data via the API, or OSC, and with pull request #3059 it's now nicely integrated into the WebUI.

The job history is linked via the binary page of the package binaries. To reach that page, go to the package view and click on the repository you want to inspect. Each architecture has a separate job history. Click on 'Job history' link to open the job history page.

And this is how it looks like.

Refactor requests page for packages and projects

We recently refactored the user request data tables to use a DataTable and DataTableRow model. The new models take care of preparing all data needed for rendering them in a list of requests. This card was about using these models also for the package and project request pages.

GPG key handling

OBS already allowed user to download a project's GPG key via the WebUI. With the recent changes, you can get a full overview of relevant GPG key data. That makes it much easier to verify rpms of a project.

Migrated package controller tests to RSpec

Some month ago we created a new, shiny RSpec based test suite to OBS. Now we are in the process of migrating existing tests to RSpec. Once this is done we can finally turn off the old test suite. By moving the package controller tests to the new test suite, we got one step further towards this goal.

Note down Hermes features we want to keep

OBS is using Hermes to send out notifications for many years. Since the project is unmaintained by now it's time to revamp our notification system. So in this sprint we sat together, wrote down Hermes functionality we want to keep using and created a list covering these features. The result can be found in our Sprint backlog and are referenced from the card we have been working on.