Ensuring flexibility for developers is essential for an efficient CI/CD tool as it can give significant benefits. Zuul is one such tool that functions on a Git driven philosophy and therefore reads most of its configurations from git repositories. Thus, making limitations a thing of the past through Zuul’s flexible configurations and multi-repository dependencies. Zuul has had an extensive integration with Gerrit, and its latest release, Version 3, supports a much broader range of use cases and development platforms. Some of the most notable being its integration with GitHub.
Zuul now supports different development platforms like Git, GitHub, Gerrit, GitHub Enterprise and Pagure. These platforms operate drivers that help Zuul have a configured connection with external systems by implementing the functionality required to connect to them. These drivers can perform any of the following functions:
- Sources – drivers host git repositories for projects. Zuul can clone these git repositories for projects and download refs.
- Triggers – drivers emit events; Zuul may respond to these triggers, which are configured in pipelines to cause changes or other refs to be enqueued.
- Reporters – drivers output information when a pipeline is finished processing an item.
Some of the drivers included with Zuul are:
- GitHub supports all three of the functions mentioned above, sources, triggers and reporters. It can also interact with public GitHub service and site-local installations of GitHub enterprise.
- Gerrit acts as a code review system and its driver supports sources, triggers and reporters.
- Pagure, like Github, Pagure drivers support all three of the functions mentioned earlier, sources, triggers and reporters. It can also interact with public Pagure.io service and site-local installations of Pagure.
- Git can be used to load Zuul’s configurations from public git repositories. It also performs the trigger function to trigger jobs from ref-updated events in a pipeline.
Zuul further includes other drivers such as MQTT, SMTP, SQL, Timer and Zuul itself. The first three of these drivers support reporters only whereas the latter two support only triggers.
Having multi-repository dependencies comes with benefits for all Zuul users,
- Multiple repositories make it easy to give access to subsets of repositories on a “need to code” basis.
- Each repository can have its own process of being deployed, making continuous delivery and deployment easier.
- Developers take advantage of multiple development platforms to create Adhoc continuous integration tests for exactly what they are working on at the moment.
- Developers also have the ability to work across project boundaries.
- Cross community continuous integration testing is also supported via multi-repo.
- With the option of GitHub Enterprise, all repository data can be stored on your organization’s local network and integrated with your organization’s authentication system.
VEXXHOST is now offering a fully-managed Zuul solution, where you can consume the tool as a service without worrying about the infrastructure layer underneath. We are an experienced provider of Zuul as it has not only been tested against our cloud but is also used internally for our CI/CD needs. Our offering is to manage the full cycle of the solution, from its deployment, management and monitoring to upgrades and additional support. If you are interested in this project gating tool and what it can do for your organisation, have a look at our Managed Zuul page for additional information.