Project: | Zuul |
Zuul is a program that is used to gate the source code repositories of a project so that changes are only merged if they pass tests.
By gating we mean a more proactive continuous integration suite whereby tests must pass in order to merge (rather than a traditional CI that just gives a nightly status of the master branch). This means every commit is tested both during review time and before it merges - in case the repositories have changed in the mean time.
The result of using a gating system like zuul is that it's much harder to break trunk and your nightly builds should nearly always work.
Zuul can be configured to react to events and run various jobs with success or failure results depending on the scenario. Currently Zuul is only integrated with the gerrit code review platform but there are discussions about extending it to github.
One unique and powerful feature in Zuul is its ability to run tests in a predictive manner across multiple programs. Zuul predicts what multiple repositories will look like by the time the present job is finished and arranges the tests to be performed in that order. This stops race conditions when merging code in one repository that depends on code in another repository.
Zuul can manage thousands of jobs across hundreds of projects as evident by being the gate keeper for OpenStack.
In this talk we will look at what Zuul is, how to configure it and the internals of how it works.
Joshua Hesketh is a software developer for Rackspace Australia working on upstream OpenStack. He works from his home in Hobart, Tasmania. Joshua is currently President of Linux Australia, previously the co-chair for PyCon Australia and a key organiser for linux.conf.au. He has an interest in robotics having completed a degree in mechatronic engineering. Josh is an active contributor to the openstack-infra and nova projects. While he doesn't always admit it, he's also responsible for large parts of zookeepr.