Installation

Turbo-hipster is installed directly into your Python site-packages directory, and is then run as a service. It is managed using a configuration file, which is in yaml format.

Installing turbo-hipster

1. Turbo-hipster can be installed directly to your Python site-packages directory:

$ sudo python setup.py install

2. Copy the configuration file to a convenient location. By default, turbo-hipster will look in /etc/turbo-hipster/config.yaml:

$ cp -R etc/turbo-hipster /etc/

3. The turbo-hipster configuration file is in yaml format. Open the config.yaml configuration file in your preferred editor and modify it for your environment:

**zuul_server**
  A dictionary containing details about how to communicate
  with zuul
     **git_url**
         The publicly accessible protocol and URI from where
         to clone projects and zuul_ references from. For
         example::
             http://review.openstack.org/p/
         or::
             git://review.example.org
     **gearman_host**
         The host of gearman_. zuul talks to its workers via
         the gearman protocol and while it comes with a built-
         in gearman server you can use a separate one.
     **gearman_port**
         The port that gearman listens on.
**debug_log**
  A path to the debug log. Turbo-hipster will attempt to create
  the file but must have write permissions.
**jobs_working_dir**
  Each job will likely need to write out log and debug
  information. This defines where turbo-hipster will do that.
**git_working_dir**
  turbo-hipster needs to take a copy of the git tree of a
  project to work from. This is the path it'll clone into and
  work from (if needed).
**pip_download_cache**
  Some of turbo-hipsters task plugins download requirements
  for projects. This is the cache directory used by pip.
**jobs**
  A list of registered jobs.
    **name**
      The name of the job to register. This is the function name
      for zuul's job. eg build:some_job.
    **plugin** (optional)
      The plugin to use. Defaults to shell_task.
  Any other variables the plugin may require for the job.
**plugins** (depreciated)
  This is depreciated in favour of jobs (above).
  A list of enabled plugins and their settings in a dictionary.
  The only required parameters are *name*, which should be the
  same as the folder containing the plugin module, and
  *function*, which is the function registered with zuul.
  Any other parameters are specified by the plugin themselves
  as required.
**publish_logs**
  Log results from plugins can be published using multiple
  methods. Currently only a local copy is fully implemented.
     **type**
         The type of protocol to copy the log to. eg 'local'
     **path**
         A type specific parameter defining the local location
         destination.
     **prepend_url**
         What to prepend to the path when sending the result
         URL back to zuul. This can be useful as you may want
         to use a script to authenticate against a swift
         account or to use *laughing_spice* to format the logs
         etc.
**conf_d**
  A path of a directory containing pieces of json confiuration.
  This is helpful when you want different plugins to add extra
  or even modify the default configuration.
  1. Create a turbo-hipster user:
$ useradd turbo-hipster

5. Create the directories listed in the configuration file, and give the turbo-hipster user write access:

$ mkdir -p /var/log/turbo-hipster/ $ chown turbo-hipster:turbo-hipster /var/log/turbo-hipster/

$ mkdir -p /var/lib/turbo-hipster/jobs $ chown turbo-hipster:turbo-hipster /var/lib/turbo-hipster/jobs

$ mkdir -p /var/lib/turbo-hipster/git $ chown turbo-hipster:turbo-hipster /var/lib/turbo-hipster/git

$ mkdir -p /var/cache/pip $ chown turbo-hipster:turbo-hipster /var/cache/pip

6. Open the MySQL log rotation configuration file in your preferred text editor, and edit it to ensure it is writable by other:

$ vim /etc/logrotate.d/mysql-server # edit create 640 to 644.

Note

The turbo-hipster source code is also available for download from the turbo-hipster github page

$ git clone https://github.com/rcbau/turbo-hipster

Note

Debug logging must be configured for turbo-hipster, as it uses the Python logging framework to capture log messages from the task plugin code. To configure debug logging, set the debug_log configuration setting in the config.yaml configuration file.