In the movie Ghostbusters, Zuul is the demigod and gatekeeper of Gozer, the destructor.
In OpenStack, ZUUL is a program used to gate the source code repository of a project so that changes are only merged if they pass tests. Zuul is a pipeline-oriented project gating system that facilitates running tests and automated tasks in response to gerrit events.
Zuul - A Project Gating System — Zuul 2.5.2.dev44 documentation
Zuul — OpenStack Project Infrastructure 0.0.1.dev12032 documentation
GitHub - openstack-infra/zuul
Components of Zuul:
- Connections (Gerrit, SMTP)
- Triggers (Gerrit, Timer, Zuul)
- Reporters (Gerrit, SMTP)
- Zuul Cloner
- Launchers (Gearman Jenkins Plugin)
- Statsd reporting (Metrics)
- Zuul Client
Zuul architecture:
Zulu-Jenkins Integration:
The Gearman Jenkins Plugin makes it easy to use Jenkins with Zuul by providing an interface between Jenkins and Gearman
(https://wiki.jenkins-ci.org/display/JENKINS/Gearman+Plugin).
Gearman Plugin passes Zuul Parameters as Jenkins build parameters (http://docs.openstack.org/infra/zuul/launchers.html#zuul-parameters).
Example Jenkins Git SCM plugin configuration:
Source Code Management:
Git Repositories:
Repository URL: <your Gerrit or Zuul repository URL>
Advanced:
Refspec: ${Zuul_REF}
Branches to build:
Branch Specifier: ${Zuul_COMMIT}
Advanced:
Clean after checkout: True
Zuul v3 supports multi-node. Example multi-node playbook:
### openstack-infra/zuul-playbooks/zuul-multinode.yaml
---
hosts: controller
roles:
- zuul-controller
---
hosts: compute
roles:
- zuul-compute
To deploy Zuul on bare-metal, devstack-vm-gate-wrap.sh must be replaced with bare-metal orchestration.
devstack-vm-gate-wrap.sh - openstack-infra/devstack-gate - Run DevStack in the gate
OpenStack Kolla deploys OpenStack cloud in Docker containers in gate using Zuul.
Kolla - OpenStack
project-config/kolla.yaml at master · openstack-infra/project-config · GitHub
Other useful links needed to deploy Zuul: