The Gatekeeper, or a project gating system
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.0 KiB


Zuul Cloner

Zuul Cloner

Zuul includes a simple command line client that may be used to clone repositories with Zuul references applied.


Clone map

By default, Zuul cloner will clone the project under basepath which would create sub directories whenever a project name contains slashes. Since you might want to finely tweak the final destination, a clone map lets you change the destination on a per project basis. The configuration is done using a YAML file passed with -m.

With a project hierarchy such as:


You might want to get project straight in the base path, the clone map would be:

 - name: 'project'
   dest: '.'

Then to strip out thirdparty such that the plugins land under the /plugins directory of the basepath, you can use regex and capturing groups:

 - name: 'project'
   dest: '.'
 - name: 'thirdparty/(plugins/.*)'
   dest: '\1'

The resulting workspace will contains:

project -> ./
thirdparty/plugins/plugin1  -> ./plugins/plugin1

Zuul parameters

The Zuul cloner reuses Zuul parameters such as ZUUL_BRANCH, ZUUL_REF or ZUUL_PROJECT. It will attempt to load them from the environment variables or you can pass them as parameters (in which case it will override the environment variable if it is set). The matching command line parameters use the zuul prefix hence ZUUL_REF can be passed to the cloner using --zuul-ref.


The general options that apply are:

zuul-cloner --help

Clone order

When cloning repositories, the destination folder should not exist or git clone will complain. This happens whenever cloning a sub project before its parent project. For example:

zuul-cloner project/plugins/plugin1 project

Will create the directory project when cloning the plugin. The cloner processes the clones in the order supplied, so you should swap the projects:

zuul-cloner project project/plugins/plugin1