Quick Start Guide ================= This provides a very simple overview of Zuul. It is recommended to read the following sections for more details. Install Zuul ------------ You can get zuul from pypi via:: pip install zuul Zuul Components --------------- Zuul provides the following components: - **zuul-scheduler**: The main Zuul process. Handles receiving events, executing jobs, collecting results and posting reports. Coordinates the work of the other components. - **zuul-merger**: Scale-out component that performs git merge operations. Zuul performs a large number of git operations in the course of its work. Adding merger processes can help speed Zuul's processing. This component is optional (zero or more of these can be run). - **zuul-executor**: Scale-out component for executing jobs. At least one of these is required. Depending on system configuration, you can expect a single executor to handle up to about 100 simultaneous jobs. Can handle the functions of a merger if dedicated mergers are not provided. One or more of these must be run. - **zuul-web**: A web server that currently provides websocket access to live-streaming of logs. - **gearman**: optional builtin gearman daemon provided by zuul-scheduler External components: - **gearman**: A gearman daemon if the built-in daemon is not used. - **zookeeper**: A zookeeper cluster (or single host) for communicating with Nodepool. - **nodepool**: Provides nodes for Zuul to use when executing jobs. Zuul Setup ---------- At minimum you need to provide **zuul.conf** and **main.yaml** placed in **/etc/zuul/**. The following example uses the builtin gearman service in Zuul, and a connection to Gerrit. **zuul.conf**:: [scheduler] tenant_config=/etc/zuul/main.yaml [gearman_server] start=true [gearman] server=127.0.0.1 [connection gerrit] driver=gerrit server=git.example.com port=29418 baseurl=https://git.example.com/gerrit/ user=zuul sshkey=/home/zuul/.ssh/id_rsa See :ref:`components` and :ref:`connections` for more details. The following tells Zuul to read its configuration from and operate on the *example-project* project: **main.yaml**:: - tenant: name: example-tenant source: gerrit: untrusted-projects: - example-project Starting Zuul ------------- You can run any zuul process with the **-d** option to make it not daemonize. It's a good idea at first to confirm there's no issues with your configuration. To start, simply run:: zuul-scheduler Once run you should have two zuul-scheduler processes (if using the built-in gearman server, or one process otherwise). Before Zuul can run any jobs, it needs to load its configuration, most of which is in the git repositories that Zuul operates on. Start an executor to allow zuul to do that:: zuul-executor Zuul should now be able to read its configuration from the configured repo and process any jobs defined therein. Troubleshooting --------------- You can use telnet to connect to gearman to check which Zuul components are online:: telnet 4730 Useful commands are **workers** and **status** which you can run by just typing those commands once connected to gearman.