Skip to content

DLRN: What it is, what we use it for

DLRN (can be read as "Delorean") is an application that helps us do continuous packaging of RDO. It is used to build packages using the latest commit from each of the OpenStack project repositories.

DLRN can be run as a standalone application to create a single package, or periodically (using a cron job) to rebuild all packages listed for a specific release.

High-level DLRN flow

The basic DLRN flow is:

  • For each package listed in the RDO metadata file:
    • Fetch the latest upstream commit from the OpenStack Git repositories
    • Fetch the latest commit from the distgit repositories
    • Build an RPM package using the source and distgit commits
    • Create a YUM repository with that package, and the latest build package for the other packages
    • If a package build fails, open a review in the RDO Gerrit to track and fix the issue.

The result of each DLRN run is an RDO Trunk repository, containing the latest commit from each supported OpenStack project, ready to be consumed.

Tips and tricks

Multiple branch support

DLRN can build packages using different upstream branches, not only master. For example, we have DLRN workers building packages for the Newton and Mitaka releases. That allows us to test each commit landing to stable/newton and stable/mitaka before it is part of a release. We can select which releases we want to build a package for using tags in the RDO metadata file, for example:

- project: watcher
  conf: rpmfactory-core
  tags:
    ocata-uc:
    ocata:
    newton:

This project (openstack-watcher) is built for Ocata (master) and Newton.

Setting up a DLRN instance

You can follow the instructions from the README file to set up a test instance. The Puppet module we use to build the RDO instances is also available if you want to take a look at how to configure multiple instances on a single machine.